Java读取文件夹下的文件并进行处理

前言:

我们在处理文本的时候经常会出现这样的问题,如下图,是我们的文件村上春树的作品集(发现里面既有文件又有文件夹),但是点开一个文件夹后发现,里面又有很多的章节(例如海边的卡夫卡,点进去有很多章节),我们这样去看的时候有时候很不方便,我们将属于同一作品的章节文章合并到一起,这样就好了(这里只是举一个例子)。有时候我们处理文件的时候会遇到文件和文件夹在一起的时候,如何用程序去处理这些。

点开《海边的卡夫卡》里面又有很多章节:

在这里只是举一个例子,接下来其实是用Java如何去处理文件夹下既有文件又有子文件夹的情况。

处理策略

在这里我们的处理策略是,利用java.io.File类下的listFiles方法,将一个文件夹下的所有文件对象用一个List保存起来,然后一个一个的处理(类似于一种广度优先搜索的思想)。

读取单个文件的内容

读取单个文件的内容的代码其实很好写,就是一个io流读取文件的过程,这里我们返回String类型便于保存。

    /**
     * 读取单个文件的内容
     * @param file
     * @return 文件的内容,String
     */
    public static String readContents(File file){        StringBuilder res = new StringBuilder();
        BufferedReader br = null;        try {            br = new BufferedReader(new FileReader(file));
            while(br.ready()){                //这里可以作相关的处理过程 #todo your code#
                res.append(br.readLine() + "\n");
            }
            br.close();
        } catch (FileNotFoundException e) {            e.printStackTrace();
        } catch (IOException e) {            e.printStackTrace();
        }        return res.toString();
    }

读取文件夹下的文件

这里我们的初步思路是:按照广度优先搜索的策略,遇到文件将其文件的绝对路径加到一个Filelist集合中去,遇到文件夹将其文件夹的File对象加到Dirlist中去,最后处理并合并Filelist中小说名称一样的小说文本。其代码如下:

/**
     * 读取文件夹下的所有文件的内容
     * @param path
     */
    public static void readFilesDir(String path){        LinkedList<File> Dirlist = new LinkedList<File>();
        LinkedList<String> Filelist = new LinkedList<String>();
        File dir = new File(path);
        File[] files = dir.listFiles();         for(File file : files){            if(file.isDirectory()){                Dirlist.add(file);
            }else{                //处理文件内容
                Filelist.add(file.getAbsolutePath());
                System.out.println(file.getAbsolutePath());
            }
        }        File temp;
        while(!Dirlist.isEmpty()){            temp = Dirlist.removeFirst();
            if(temp.isDirectory()){                files = temp.listFiles();
                if(files == null) continue;
                for(File file : files){                    if(file.isDirectory()){                        Dirlist.add(file);
                    }else{                        //处理文件内容
                        Filelist.add(file.getAbsolutePath());
                        System.out.println(file.getAbsolutePath());
                    }
                }
            }else{                //处理文件内容,这种情况好像不会发生
                System.out.println("-------------");
            }
        }
    }

测试下文件的路径输出:

    public static void main(String[] args) {        String path = "F:/testfile";
        readFilesDir(path);
    }

发现输出的结果如下:

F:\testfile\Channel A I-那年的梦想.txt
F:\testfile\Channel A III-魔法蛋糕店.txt
F:\testfile\Channel A II-蝴蝶过期居留.txt
F:\testfile\Channel A V 刻骨的爱人.txt
F:\testfile\Channel A Ⅳ 我们都是丑小鸭.txt
F:\testfile\Channel A 如果月亮有眼睛.txt
F:\testfile\Channel A 爱情杂志.txt
F:\testfile\1973年的弹子球\1.txt
F:\testfile\1973年的弹子球\2.txt
F:\testfile\1973年的弹子球\3.txt
F:\testfile\1973年的弹子球\4.txt
F:\testfile\1973年的弹子球\5.txt
F:\testfile\且听风吟\1.txt
F:\testfile\且听风吟\2.txt
F:\testfile\且听风吟\3.txt
F:\testfile\且听风吟\4.txt
F:\testfile\且听风吟\5.txt
F:\testfile\且听风吟\6.txt
F:\testfile\且听风吟\7.txt
F:\testfile\且听风吟\8.txt
F:\testfile\世界尽头与冷酷仙境\01.txt
F:\testfile\世界尽头与冷酷仙境\02.txt
F:\testfile\世界尽头与冷酷仙境\03.txt
F:\testfile\世界尽头与冷酷仙境\04.txt
F:\testfile\世界尽头与冷酷仙境\05.txt
F:\testfile\世界尽头与冷酷仙境\06.txt
F:\testfile\世界尽头与冷酷仙境\07.txt
F:\testfile\世界尽头与冷酷仙境\08.txt
F:\testfile\世界尽头与冷酷仙境\09.txt
F:\testfile\世界尽头与冷酷仙境\10.txt
F:\testfile\世界尽头与冷酷仙境\11.txt
F:\testfile\世界尽头与冷酷仙境\12.txt
F:\testfile\世界尽头与冷酷仙境\13.txt
F:\testfile\世界尽头与冷酷仙境\14.txt
F:\testfile\世界尽头与冷酷仙境\15.txt
F:\testfile\世界尽头与冷酷仙境\16.txt
F:\testfile\世界尽头与冷酷仙境\17.txt
F:\testfile\世界尽头与冷酷仙境\18.txt
F:\testfile\世界尽头与冷酷仙境\19.txt
F:\testfile\世界尽头与冷酷仙境\20.txt
F:\testfile\世界尽头与冷酷仙境\21.txt
F:\testfile\世界尽头与冷酷仙境\22.txt
F:\testfile\世界尽头与冷酷仙境\23.txt
F:\testfile\世界尽头与冷酷仙境\24.txt
F:\testfile\世界尽头与冷酷仙境\25.txt
F:\testfile\世界尽头与冷酷仙境\26.txt
F:\testfile\世界尽头与冷酷仙境\27.txt
F:\testfile\世界尽头与冷酷仙境\28.txt
F:\testfile\世界尽头与冷酷仙境\29.txt
F:\testfile\世界尽头与冷酷仙境\30.txt
F:\testfile\世界尽头与冷酷仙境\31.txt
F:\testfile\世界尽头与冷酷仙境\32.txt
F:\testfile\世界尽头与冷酷仙境\33.txt
F:\testfile\世界尽头与冷酷仙境\34.txt
F:\testfile\世界尽头与冷酷仙境\35.txt
F:\testfile\世界尽头与冷酷仙境\36.txt
F:\testfile\世界尽头与冷酷仙境\37.txt
F:\testfile\世界尽头与冷酷仙境\38.txt
F:\testfile\世界尽头与冷酷仙境\39.txt
F:\testfile\世界尽头与冷酷仙境\40.txt
F:\testfile\世界尽头与冷酷仙境\41.txt
F:\testfile\列克星敦的幽灵\1.txt
F:\testfile\列克星敦的幽灵\2.txt
F:\testfile\列克星敦的幽灵\3.txt
F:\testfile\列克星敦的幽灵\4.txt
F:\testfile\列克星敦的幽灵\5.txt
F:\testfile\列克星敦的幽灵\6.txt
F:\testfile\列克星敦的幽灵\7.txt
F:\testfile\列克星敦的幽灵\8.txt
F:\testfile\去中国的小船\1.txt
F:\testfile\去中国的小船\2.txt
F:\testfile\去中国的小船\3.txt
F:\testfile\去中国的小船\4.txt
F:\testfile\去中国的小船\5.txt
F:\testfile\去中国的小船\6.txt
F:\testfile\去中国的小船\7.txt
F:\testfile\国境以南 太阳以西\01.txt
F:\testfile\国境以南 太阳以西\02.txt
F:\testfile\国境以南 太阳以西\03.txt
F:\testfile\国境以南 太阳以西\04.txt
F:\testfile\国境以南 太阳以西\05.txt
F:\testfile\国境以南 太阳以西\06.txt
F:\testfile\国境以南 太阳以西\07.txt
F:\testfile\国境以南 太阳以西\08.txt
F:\testfile\国境以南 太阳以西\09.txt
F:\testfile\国境以南 太阳以西\10.txt
F:\testfile\国境以南 太阳以西\11.txt
F:\testfile\国境以南 太阳以西\12.txt
F:\testfile\国境以南 太阳以西\13.txt
F:\testfile\国境以南 太阳以西\14.txt
F:\testfile\国境以南 太阳以西\15.txt
F:\testfile\国境以南 太阳以西\16.txt
F:\testfile\夜半蜘蛛猴\01.txt
F:\testfile\夜半蜘蛛猴\02.txt
F:\testfile\夜半蜘蛛猴\03.txt
F:\testfile\夜半蜘蛛猴\04.txt
F:\testfile\夜半蜘蛛猴\05.txt
F:\testfile\夜半蜘蛛猴\06.txt
F:\testfile\夜半蜘蛛猴\07.txt
F:\testfile\夜半蜘蛛猴\08.txt
F:\testfile\夜半蜘蛛猴\09.txt
F:\testfile\夜半蜘蛛猴\10.txt
F:\testfile\夜半蜘蛛猴\11.txt
F:\testfile\夜半蜘蛛猴\12.txt
F:\testfile\夜半蜘蛛猴\13.txt
F:\testfile\夜半蜘蛛猴\14.txt
F:\testfile\天黑以后\01.txt
F:\testfile\天黑以后\02.txt
F:\testfile\天黑以后\03.txt
F:\testfile\天黑以后\04.txt
F:\testfile\天黑以后\05.txt
F:\testfile\天黑以后\06.txt
F:\testfile\天黑以后\07.txt
F:\testfile\天黑以后\08.txt
F:\testfile\天黑以后\09.txt
F:\testfile\天黑以后\10.txt
F:\testfile\天黑以后\11.txt
F:\testfile\天黑以后\12.txt
F:\testfile\天黑以后\13.txt
F:\testfile\天黑以后\14.txt
F:\testfile\天黑以后\15.txt
F:\testfile\天黑以后\16.txt
F:\testfile\天黑以后\17.txt
F:\testfile\天黑以后\18.txt
F:\testfile\天黑以后\19.txt
F:\testfile\奇鸟行状录\01.txt
F:\testfile\奇鸟行状录\02.txt
F:\testfile\奇鸟行状录\03.txt
F:\testfile\奇鸟行状录\04.txt
F:\testfile\奇鸟行状录\05.txt
F:\testfile\奇鸟行状录\06.txt
F:\testfile\奇鸟行状录\07.txt
F:\testfile\奇鸟行状录\08.txt
F:\testfile\奇鸟行状录\09.txt
F:\testfile\奇鸟行状录\10.txt
F:\testfile\奇鸟行状录\11.txt
F:\testfile\奇鸟行状录\12.txt
F:\testfile\奇鸟行状录\13.txt
F:\testfile\奇鸟行状录\14.txt
F:\testfile\奇鸟行状录\15.txt
F:\testfile\奇鸟行状录\16.txt
F:\testfile\奇鸟行状录\17.txt
F:\testfile\奇鸟行状录\18.txt
F:\testfile\奇鸟行状录\19.txt
F:\testfile\奇鸟行状录\20.txt
F:\testfile\奇鸟行状录\21.txt
F:\testfile\奇鸟行状录\22.txt
F:\testfile\奇鸟行状录\23.txt
F:\testfile\奇鸟行状录\24.txt
F:\testfile\奇鸟行状录\25.txt
F:\testfile\奇鸟行状录\26.txt
F:\testfile\奇鸟行状录\27.txt
F:\testfile\奇鸟行状录\28.txt
F:\testfile\奇鸟行状录\29.txt
F:\testfile\奇鸟行状录\30.txt
F:\testfile\奇鸟行状录\31.txt
F:\testfile\奇鸟行状录\32.txt
F:\testfile\奇鸟行状录\33.txt
F:\testfile\奇鸟行状录\34.txt
F:\testfile\奇鸟行状录\35.txt
F:\testfile\奇鸟行状录\36.txt
F:\testfile\奇鸟行状录\37.txt
F:\testfile\奇鸟行状录\38.txt
F:\testfile\奇鸟行状录\39.txt
F:\testfile\奇鸟行状录\40.txt
F:\testfile\奇鸟行状录\41.txt
F:\testfile\奇鸟行状录\42.txt
F:\testfile\奇鸟行状录\43.txt
F:\testfile\奇鸟行状录\44.txt
F:\testfile\奇鸟行状录\45.txt
F:\testfile\奇鸟行状录\46.txt
F:\testfile\奇鸟行状录\47.txt
F:\testfile\奇鸟行状录\48.txt
F:\testfile\奇鸟行状录\49.txt
F:\testfile\奇鸟行状录\50.txt
F:\testfile\奇鸟行状录\51.txt
F:\testfile\奇鸟行状录\52.txt
F:\testfile\奇鸟行状录\53.txt
F:\testfile\奇鸟行状录\54.txt
F:\testfile\奇鸟行状录\55.txt
F:\testfile\奇鸟行状录\56.txt
F:\testfile\奇鸟行状录\57.txt
F:\testfile\奇鸟行状录\58.txt
F:\testfile\奇鸟行状录\59.txt
F:\testfile\奇鸟行状录\60.txt
F:\testfile\奇鸟行状录\61.txt
F:\testfile\奇鸟行状录\62.txt
F:\testfile\奇鸟行状录\63.txt
F:\testfile\奇鸟行状录\64.txt
F:\testfile\奇鸟行状录\65.txt
F:\testfile\奇鸟行状录\66.txt
F:\testfile\奇鸟行状录\67.txt
F:\testfile\奇鸟行状录\68.txt
F:\testfile\奇鸟行状录\69.txt
F:\testfile\奇鸟行状录\70.txt
F:\testfile\奇鸟行状录\71.txt
F:\testfile\奇鸟行状录\72.txt
F:\testfile\奇鸟行状录\73.txt
F:\testfile\奇鸟行状录\74.txt
F:\testfile\寻羊冒险记\1.txt
F:\testfile\寻羊冒险记\2.txt
F:\testfile\寻羊冒险记\3.txt
F:\testfile\寻羊冒险记\4.txt
F:\testfile\寻羊冒险记\5.txt
F:\testfile\寻羊冒险记\6.txt
F:\testfile\寻羊冒险记\7.txt
F:\testfile\寻羊冒险记\8.txt
F:\testfile\寻羊冒险记\9.txt
F:\testfile\寻羊冒险记\contents.txt
F:\testfile\挪威的森林\挪威的森林.txt
F:\testfile\斯普特尼克恋人\01.txt
F:\testfile\斯普特尼克恋人\02.txt
F:\testfile\斯普特尼克恋人\03.txt
F:\testfile\斯普特尼克恋人\04.txt
F:\testfile\斯普特尼克恋人\05.txt
F:\testfile\斯普特尼克恋人\06.txt
F:\testfile\斯普特尼克恋人\07.txt
F:\testfile\斯普特尼克恋人\08.txt
F:\testfile\斯普特尼克恋人\09.txt
F:\testfile\斯普特尼克恋人\10.txt
F:\testfile\斯普特尼克恋人\11.txt
F:\testfile\斯普特尼克恋人\12.txt
F:\testfile\斯普特尼克恋人\13.txt
F:\testfile\斯普特尼克恋人\14.txt
F:\testfile\斯普特尼克恋人\15.txt
F:\testfile\斯普特尼克恋人\16.txt
F:\testfile\斯普特尼克恋人\17.txt
F:\testfile\旋转木马鏖战记\1.txt
F:\testfile\旋转木马鏖战记\2.txt
F:\testfile\旋转木马鏖战记\3.txt
F:\testfile\旋转木马鏖战记\4.txt
F:\testfile\旋转木马鏖战记\5.txt
F:\testfile\旋转木马鏖战记\6.txt
F:\testfile\旋转木马鏖战记\7.txt
F:\testfile\旋转木马鏖战记\8.txt
F:\testfile\旋转木马鏖战记\9.txt
F:\testfile\村上春树短篇集\01.txt
F:\testfile\村上春树短篇集\02.txt
F:\testfile\村上春树短篇集\03.txt
F:\testfile\村上春树短篇集\04.txt
F:\testfile\村上春树短篇集\05.txt
F:\testfile\村上春树短篇集\06.txt
F:\testfile\村上春树短篇集\07.txt
F:\testfile\村上春树短篇集\08.txt
F:\testfile\村上春树短篇集\09.txt
F:\testfile\村上春树短篇集\10.txt
F:\testfile\村上春树短篇集\11.txt
F:\testfile\村上春树短篇集\12.txt
F:\testfile\村上春树短篇集\13.txt
F:\testfile\村上春树短篇集\14.txt
F:\testfile\村上春树短篇集\15.txt
F:\testfile\村上春树短篇集\16.txt
F:\testfile\村上春树短篇集\17.txt
F:\testfile\村上春树短篇集\18.txt
F:\testfile\村上春树短篇集\19.txt
F:\testfile\村上春树短篇集\20.txt
F:\testfile\村上春树短篇集\21.txt
F:\testfile\村上春树短篇集\22.txt
F:\testfile\村上春树短篇集\23.txt
F:\testfile\村上春树短篇集\24.txt
F:\testfile\村上春树短篇集\25.txt
F:\testfile\村上春树短篇集\26.txt
F:\testfile\村上春树短篇集\27.txt
F:\testfile\村上春树短篇集\28.txt
F:\testfile\村上春树短篇集\29.txt
F:\testfile\村上春树短篇集\30.txt
F:\testfile\村上春树短篇集\31.txt
F:\testfile\村上春树短篇集\32.txt
F:\testfile\村上春树短篇集\33.txt
F:\testfile\村上春树短篇集\34.txt
F:\testfile\村上春树短篇集\35.txt
F:\testfile\村上春树短篇集\36.txt
F:\testfile\村上春树短篇集\37.txt
F:\testfile\村上春树短篇集\38.txt
F:\testfile\村上春树短篇集\39.txt
F:\testfile\村上春树短篇集\40.txt
F:\testfile\村上春树短篇集\41.txt
F:\testfile\村上春树短篇集\42.txt
F:\testfile\村上春树短篇集\43.txt
F:\testfile\村上春树短篇集\44.txt
F:\testfile\村上春树短篇集\45.txt
F:\testfile\村上春树短篇集\46.txt
F:\testfile\村上春树短篇集\47.txt
F:\testfile\村上春树短篇集\48.txt
F:\testfile\村上春树短篇集\49.txt
F:\testfile\村上春树短篇集\50.txt
F:\testfile\村上春树短篇集\51.txt
F:\testfile\村上春树短篇集\52.txt
F:\testfile\村上春树短篇集\53.txt
F:\testfile\村上春树短篇集\54.txt
F:\testfile\村上春树短篇集\55.txt
F:\testfile\村上春树短篇集\56.txt
F:\testfile\村上春树短篇集\57.txt
F:\testfile\村上春树短篇集\58.txt
F:\testfile\海边的卡夫卡\01.txt
F:\testfile\海边的卡夫卡\02.txt
F:\testfile\海边的卡夫卡\03.txt
F:\testfile\海边的卡夫卡\04.txt
F:\testfile\海边的卡夫卡\05.txt
F:\testfile\海边的卡夫卡\06.txt
F:\testfile\海边的卡夫卡\07.txt
F:\testfile\海边的卡夫卡\08.txt
F:\testfile\海边的卡夫卡\09.txt
F:\testfile\海边的卡夫卡\10.txt
F:\testfile\海边的卡夫卡\11.txt
F:\testfile\海边的卡夫卡\12.txt
F:\testfile\海边的卡夫卡\13.txt
F:\testfile\海边的卡夫卡\14.txt
F:\testfile\海边的卡夫卡\15.txt
F:\testfile\海边的卡夫卡\16.txt
F:\testfile\海边的卡夫卡\17.txt
F:\testfile\海边的卡夫卡\18.txt
F:\testfile\海边的卡夫卡\19.txt
F:\testfile\海边的卡夫卡\20.txt
F:\testfile\海边的卡夫卡\21.txt
F:\testfile\海边的卡夫卡\22.txt
F:\testfile\海边的卡夫卡\23.txt
F:\testfile\海边的卡夫卡\24.txt
F:\testfile\海边的卡夫卡\25.txt
F:\testfile\海边的卡夫卡\26.txt
F:\testfile\海边的卡夫卡\27.txt
F:\testfile\海边的卡夫卡\28.txt
F:\testfile\海边的卡夫卡\29.txt
F:\testfile\海边的卡夫卡\30.txt
F:\testfile\海边的卡夫卡\31.txt
F:\testfile\海边的卡夫卡\32.txt
F:\testfile\海边的卡夫卡\33.txt
F:\testfile\海边的卡夫卡\34.txt
F:\testfile\海边的卡夫卡\35.txt
F:\testfile\海边的卡夫卡\36.txt
F:\testfile\海边的卡夫卡\37.txt
F:\testfile\海边的卡夫卡\38.txt
F:\testfile\海边的卡夫卡\39.txt
F:\testfile\海边的卡夫卡\40.txt
F:\testfile\海边的卡夫卡\41.txt
F:\testfile\海边的卡夫卡\42.txt
F:\testfile\海边的卡夫卡\43.txt
F:\testfile\海边的卡夫卡\44.txt
F:\testfile\海边的卡夫卡\45.txt
F:\testfile\海边的卡夫卡\46.txt
F:\testfile\海边的卡夫卡\47.txt
F:\testfile\海边的卡夫卡\48.txt
F:\testfile\海边的卡夫卡\49.txt
F:\testfile\海边的卡夫卡\50.txt
F:\testfile\海边的卡夫卡\51.txt
F:\testfile\舞!舞!舞!\01.txt
F:\testfile\舞!舞!舞!\02.txt
F:\testfile\舞!舞!舞!\03.txt
F:\testfile\舞!舞!舞!\04.txt
F:\testfile\舞!舞!舞!\05.txt
F:\testfile\舞!舞!舞!\06.txt
F:\testfile\舞!舞!舞!\07.txt
F:\testfile\舞!舞!舞!\08.txt
F:\testfile\舞!舞!舞!\09.txt
F:\testfile\舞!舞!舞!\10.txt
F:\testfile\舞!舞!舞!\11.txt
F:\testfile\舞!舞!舞!\12.txt
F:\testfile\舞!舞!舞!\13.txt
F:\testfile\舞!舞!舞!\14.txt
F:\testfile\舞!舞!舞!\15.txt
F:\testfile\舞!舞!舞!\16.txt
F:\testfile\舞!舞!舞!\17.txt
F:\testfile\舞!舞!舞!\18.txt
F:\testfile\舞!舞!舞!\19.txt
F:\testfile\舞!舞!舞!\20.txt
F:\testfile\舞!舞!舞!\21.txt
F:\testfile\舞!舞!舞!\22.txt
F:\testfile\舞!舞!舞!\23.txt
F:\testfile\舞!舞!舞!\24.txt
F:\testfile\舞!舞!舞!\25.txt
F:\testfile\舞!舞!舞!\26.txt
F:\testfile\舞!舞!舞!\27.txt
F:\testfile\舞!舞!舞!\28.txt
F:\testfile\舞!舞!舞!\29.txt
F:\testfile\舞!舞!舞!\30.txt
F:\testfile\舞!舞!舞!\31.txt
F:\testfile\舞!舞!舞!\32.txt
F:\testfile\舞!舞!舞!\33.txt
F:\testfile\舞!舞!舞!\34.txt
F:\testfile\舞!舞!舞!\35.txt
F:\testfile\舞!舞!舞!\36.txt
F:\testfile\舞!舞!舞!\37.txt
F:\testfile\舞!舞!舞!\38.txt
F:\testfile\舞!舞!舞!\39.txt
F:\testfile\舞!舞!舞!\40.txt
F:\testfile\舞!舞!舞!\41.txt
F:\testfile\舞!舞!舞!\42.txt
F:\testfile\舞!舞!舞!\43.txt
F:\testfile\舞!舞!舞!\44.txt
F:\testfile\舞!舞!舞!\45.txt
F:\testfile\象厂喜剧\1.txt
F:\testfile\象厂喜剧\2.txt
F:\testfile\象厂喜剧\3.txt
F:\testfile\象厂喜剧\4.txt
F:\testfile\象厂喜剧\5.txt
F:\testfile\象厂喜剧\6.txt
F:\testfile\象厂喜剧\7.txt

这个时候有了这些文件的绝对路径,就可以按照读取单个文件内容的方法获取这些文件的内容然后进行合并。这里的合并其实很简单,路径中按照\分割后的第三个字符串就是小说的名字,如果小说名一样就合并为一个文件并保存到新的文本中去。

这里合并并保存的代码如下:

    /**
     * 保存文件
     */
    public static void saveFiles(String contents, String output){        File outputFile = new File(output);
        try {            if(!outputFile.exists()){                outputFile.createNewFile();
            }
            //这里的true是在文本的末尾追加而不是删除重新添加
            BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile, true));
            bw.write(contents);            bw.flush();
            bw.close();        } catch (Exception e) {            e.printStackTrace();
        }        System.out.println("保存成功!!!");
    }    //合并小说名一样的文件
    public static void mergeFiles(List<String> files, String output){        if(files == null){            System.out.println("Error:文件list为空");
        }        for(String filepath : files){            String name = filepath.split("\\\\")[2];
            String contents = readContents(new File(filepath));
            saveFiles(contents,output+"/"+name+".txt");        }        System.out.println("合并完成");
    }

然后查看结果:

整个程序代码如下:

package com.hfut.Files;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;public class FileUtils {    //用来保存文件的绝对路径的list
    static LinkedList<String> Filelist = new LinkedList<String>();    /**
     * 读取文件夹下的所有文件并获取文件的绝对路径
     * @param path
     */
    public static void readFilesDir(String path){        LinkedList<File> Dirlist = new LinkedList<File>();        File dir = new File(path);
        File[] files = dir.listFiles();         for(File file : files){            if(file.isDirectory()){                Dirlist.add(file);
            }else{                //处理文件内容
                Filelist.add(file.getAbsolutePath());
                System.out.println(file.getAbsolutePath());
            }
        }        File temp;
        while(!Dirlist.isEmpty()){            temp = Dirlist.removeFirst();
            if(temp.isDirectory()){                files = temp.listFiles();
                if(files == null) continue;
                for(File file : files){                    if(file.isDirectory()){                        Dirlist.add(file);
                    }else{                        //处理文件内容
                        Filelist.add(file.getAbsolutePath());
                        System.out.println(file.getAbsolutePath());
                    }
                }
            }else{                //处理文件内容,这种情况好像不会发生
                System.out.println("-------------");
            }
        }
    }    /**
     * 读取单个文件的内容
     * @param file
     * @return 文件的内容,String
     */
    public static String readContents(File file){        StringBuilder res = new StringBuilder();
        BufferedReader br = null;        try {            br = new BufferedReader(new FileReader(file));
            while(br.ready()){                res.append(br.readLine() + "\n");
            }
            br.close();
        } catch (FileNotFoundException e) {            e.printStackTrace();
        } catch (IOException e) {            e.printStackTrace();
        }        return res.toString();
    }    /**
     * 保存文件
     */
    public static void saveFiles(String contents, String output){        File outputFile = new File(output);
        try {            if(!outputFile.exists()){                outputFile.createNewFile();
            }            BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile, true));
            bw.write(contents);            bw.flush();
            bw.close();        } catch (Exception e) {            e.printStackTrace();
        }        System.out.println("保存成功!!!");
    }    //合并小说名一样的文件
    public static void mergeFiles(List<String> files, String output){        if(files == null){            System.out.println("Error:文件list为空");
        }        for(String filepath : files){            String name = filepath.split("\\\\")[2];
            String contents = readContents(new File(filepath));
            saveFiles(contents,output+"/"+name+".txt");        }        System.out.println("合并完成");
    }    public static void main(String[] args) {        String path = "F:/testfile";
        String out = "F:/test";
        readFilesDir(path);
        mergeFiles(Filelist, out);    }
}

Java读取文件夹下的文件并进行处理相关推荐

  1. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    java读取文件夹下所有文件并替换文件每一行中指定的字符串 该文章为转载文章,请尊重原文作者的劳动成果,好的文章应该被展示 原文传送门 多说两句,关键时候救人性命的人,可以称之为大人,随时做好利见大人 ...

  2. Java删除指定文件夹下的文件和目录

    Java删除指定文件夹下的文件和目录 import java.io.File;public class TestFile {public static void main(String[] args) ...

  3. android 读取assets文件夹下的文件资源

    今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...

  4. python怎么读文件夹下的文件夹-python2.7读取文件夹下所有文件名称及内容的方法...

    最近稍稍有点空闲时间,于是重新温习了一下之前学习过的python基础.废话不多说,记录一下自己的所得. 首先,安装什么的不在本人的温习范围,另,本人使用的是windows下的python2.7版本,且 ...

  5. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件;import java.io.File;public class Test {public sta ...

  6. webpack 读取文件夹下的文件_TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建...

    1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...

  7. C# 读取指定文件夹下所有文件

    #region 读取文件 //返回指定目录中的文件的名称(绝对路径)string[] files = System.IO.Directory.GetFiles(@"D:\Test" ...

  8. java删除文件模糊_Java实现的模糊匹配某文件夹下的文件并删除功能示例

    本文实例讲述了Java实现的模糊匹配某文件夹下的文件并删除功能.分享给大家供大家参考,具体如下: package com.wyebd.gis; import java.io.File; /** * @ ...

  9. python读取文件夹下所有文件的名称_python2.7 学习之读取文件夹下所有文件名称及内容...

    python2.7 学习之读取文件夹下所有文件名称及内容 最近稍稍有点空闲时间, 于是重新温习了一下之前学习过的 python 基础废话不多说, 记录一下自己的所得 首先, 安装什么的不在本人的温习范 ...

  10. 用递归方法实现读取文件夹下所有文件信息

    要实现读取文件夹下所有文件信息,其实只要用个递归方法就可以简单实现了 下面为自定义的一个类其中的showEveryFile方法就是为读取给定文件夹下每一个文件 using System; using ...

最新文章

  1. 2020年余丙森概率统计强化笔记-第一章 随机事件及其概率-第二章 一维随机变量及其分布
  2. WAMPServer自定义网站根目录
  3. mysql load会锁表吗_Mysql必读MySQL中由load data语句引起死锁的解决案例
  4. 剑指OFFER之字符串的排列(九度OJ1369)
  5. C#动态加载dll,dll目录指定
  6. python列表转换成数字_python 字母转成数字Python操作列表的常用方法总结
  7. 博弈——通过博弈思想解决的问题(hdu1847,2147)
  8. HBuilder开发APP(二)——网络请求
  9. App 分辨率相关 - iOS
  10. 蓝屏维修记录: IRQL_NOT_LESS_OR_EQUAL、WiseTDIFw64与iaStorAVC问题
  11. python视频补帧_我花了三天写了手机补帧神器
  12. H264 帧格式 封装 传输
  13. 有关神经网络的训练算法,神经网络算法通俗解释
  14. 叶聪:朋友圈爆款背后的计算机视觉技术与应用
  15. python的sqlite数据库_Python操作SQLite数据库
  16. Windows10 的microsoft defender smartscreen怎么关闭的教程和方法?
  17. 为什么要建立计算机网络体系结构标准,请问什么是网络体系结构?为什么要定义网络体系结构?...
  18. FLP不可能原理(转)
  19. 1.9Hadoop插件
  20. 基于微信小程序的订水送水系统设计与实现毕业设计毕设开题报告

热门文章

  1. Origin怎么画圆形而非椭圆形?
  2. ad网络标号设置经验_ad放置网络标号
  3. RSA之共模攻击与共享素数
  4. cmaq实践学习-飓风案例运行bcon icon mcip cctm脚本修改运行
  5. 正向代理 反向代理 理解
  6. 通过 scrapy 爬取豆果美食热门数据, 使用 flask 搭建后端, 最后搭建一个简单的小程序
  7. 浅谈公安大数据的建设
  8. 什么是互联网产品经理
  9. c# SharpPcap 截包,抓包 - 资料收集贴 --转
  10. 【解决U盘无法访问】