第一版:https://blog.csdn.net/orangewyy/article/details/111772137
在原来基础上增加了
1.递归查询文件夹中的.java文件(该文件夹及子文件夹中所有的.java文件都会被提取到读取文件的文件列表中)。
2.查询文档前,若已存在合并文件的同名文件,则跳过。
参考代码:
递归查询文件夹及子文件夹中的文件
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class GetFile {
List list = new ArrayList();
public List fileReader(File f){
File[] flist = f.listFiles(); //得到子文件夹列表
for(int i = 0;i < flist.length; i ++){
if(flist[i].isDirectory() == true){
fileReader(flist[i]); //如果是子文件夹递归调用自身
}else
flist[i].getAbsoluteFile();
list.add(flist[i].getAbsolutePath()); //得到文件名
}
return list;
}
}
主类
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Merge {
public static void main(String [] args) throws Exception{
String folderPath = "C:\\Users\\53194\\Desktop\\bbb"; //写存储学号文件夹的绝对路径
try {
List mergeList = getWriteFileList(folderPath); //读取文件夹中学生文件夹的名称并存储,方便后面建立.java文件
for (int i = 0; i < mergeList.size(); i++) {
String wTempPath = (String) mergeList.get(i);
File file = new File(wTempPath + ".java"); //新建.java文件到原文件夹下,方便写入
if (!file.exists()) { //如果已经存在合并文件同名文档,则跳过
file.createNewFile();
} else continue;
GetFile gf = new GetFile();
List fileList = gf.fileReader(new File(wTempPath)); //存储文件夹中所有的.java文件
for (int j = 0; j < fileList.size(); j++) {
String temp = (String) fileList.get(j);
if (!temp.contains(".java")) {
continue;
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(temp), "GBK"));
String readLine = br.readLine();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(wTempPath + ".java", true), "GBK"));
while (readLine != null) {
bw.write(readLine + "\r\n");
readLine = br.readLine();
}
br.close();
bw.flush();
bw.close();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
// public static List getJavaFileList(String path) { //获取所有的.java文件
// List list = new ArrayList();
// try {
// File file = new File(path);
// String[] filelist = file.list();
// for (int i = 0; i < filelist.length; i++) {
// if(filelist[i].contains(".java")) {
// list.add(path+"\\"+filelist[i]);
// }
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// return list;
// }
public static List getWriteFileList(String path) { //获取写入路径
List list = new ArrayList();
try {
File file = new File(path);
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
if(!filelist[i].contains(".java")){
list.add(path+"\\"+filelist[i]);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}