文件夹深层遍历与多文件合并小工具

场景:公司要申请软著了,要你提供用word处理好的80页源代码,哪个办?程序员道然写程序嘛!

1.将需要合并文件的文件目录拷贝到自己设置的参数目录下,例如我这是的[E:/WorkSpace/2021/80PageSourceCode/],就将所有的需要合并的文件或文件夹考到这个目录

2.代码中设置合并后的文件为[AAA.java]文件,具体的请看如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

@SuppressWarnings("resource")
public class ReadFile {
public static void main(String[] args) throws Exception {
copyFile("E:/WorkSpace/2021/80PageSourceCode/"); // 递归拷贝文件夹下的文件到指定目录
mergeFile("E:/WorkSpace/2021/80PageSourceCode/");//合并参数目录下的所有文件
}

/**
* @param fileDir============要读取[fileDir]文件夹以及子文件夹下的所有文件到[fileDir]目录
* @throws IOException
*/
private static void copyFile(String fileDir) throws IOException {
List<File> fileList = new LinkedList<File>();

File file = new File(fileDir);
File[] files = file.listFiles();// 获取目录下的所有文件或文件夹
if (files == null) {// 如果目录为空,直接退出
return;
}
// 遍历,目录下的所有文件
for (File f : files) {
if (f.isFile()) {
fileList.add(f);
}
if (f.isDirectory()) {
copyFile(f.getAbsolutePath());
}
}
int num = 0;//游标
String saveDir = "E:/WorkSpace/2021/80PageSourceCode/";//拷贝出来的文件保存地址
for (File s : fileList) {
if(s.isFile()){
System.out.println(s.getAbsolutePath());
FileReader fr = new FileReader(s);//读文件
char[] buf = new char[10240];//缓存区,根据最大文件的大小设置

num = fr.read(buf);
//System.out.println(new String(buf,0, num));//打印文件内容
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(saveDir+s.getName()));
bufferedWriter.write(new String(buf,0, num));//在创建好的文件中写入
bufferedWriter.close();//一定要关闭
}
}
}

/**
* @param fileDir========合并[fileDir]下的所有文件
* @throws Exception
*/
private static void mergeFile(String fileDir) throws Exception {
String fileName = "AAA.java";//合并的文件名称
BufferedWriter bw = new BufferedWriter(new FileWriter(fileDir+fileName));

// 读取目录下的每个文件或者文件夹,并读取文件的内容写到目标文字中去
File[] list = new File(fileDir).listFiles();
int fileCount = 0;
int folderConut = 0;
for (File file : list) {
if (file.isFile()) {
fileCount++;
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
} else {
folderConut++;
}
}
bw.close();
System.out.println("输入目录下文件个数为" + fileCount);
System.out.println("输入目录下文件夹个数为" + folderConut);
}
}

评论