遍历并读取指定目录下的所有文件内容,写入Map集合然后输出在控制台和本地文件

时间:2022-07-27 23:07:56
 1 public class FileWrite {
 2 
 3 
 4         public static void main(String[] args) throws Exception {
 5             //封装数据源目录
 6             File srcFolder = new File("E:KeyWord//");
 7             //递归实现
 8             read(srcFolder);
 9             
10            
11         }
12 
13         private static void read(File srcFolder) throws IOException {
14               Map<String, String> map = new HashMap<String, String>();
15 //              FileOutputStream FileOutputStream = new FileOutputStream(new File("E:\\KeyWord\\test.txt"));
16               
17             //获取该目录下的所有文件或文件夹的File数组
18             File[] fileArray = srcFolder.listFiles();
19             //遍历该File数组得到每一个File对象
20             for(File file : fileArray){
21                 //判断该File对象是否是文件夹
22                 if(file.isDirectory()){
23                     
24                     read(srcFolder);
25                 }else{
26                     
27                     BufferedReader br = new BufferedReader(new FileReader(file));
28                     String str;
29                     while((str = br.readLine()) != null){
30                         map.put(str, file.getName().replace(".txt", ""));
31                     }
32                 }
33             }
34             
35             //将map集合写入txt文件
36 //            ObjectOutputStream ObjectOutputStream = new ObjectOutputStream(FileOutputStream);
37 //            ObjectOutputStream.writeObject(map);
38 //            ObjectOutputStream.flush();
39 //            ObjectOutputStream.close();
40             
41             //获取value值
42            for(Object obj : map.keySet()){
43                Object value = map.get(obj);
44                System.out.println(obj + "=" + value); 
45            }
46 //            System.out.print(map);  
47         }
48 
49     }

这里主要实现将指定文件夹下含有的一些文件的内容读取并写入map集合,集合中的key是文件里面的每一行内容,value是对应的文件名。