本文用遞歸的方法實現讀取一個路徑下面的所有文件並將文件名稱保存到Txt文件中,親測可用。
遞歸讀取文件路徑下的所有文件:
/**
* 遞歸讀取文件路徑下的所有文件
*
* @param path
* @param fileNameList
* @return
*/
public static ArrayList<String> readFiles1(String path, ArrayList<String> fileNameList) {
File file = new File(path);
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
readFiles1(files[i].getPath(), fileNameList);
} else {
String path1 = files[i].getPath();
String fileName = path1.substring(path1.lastIndexOf("\\") + 1);
fileNameList.add(fileName);
}
}
} else {
String path1 = file.getPath();
String fileName = path1.substring(path1.lastIndexOf("\\") + 1);
fileNameList.add(fileName);
}
return fileNameList;
}
將內容輸出到(追加)txt文件保存:
/**
* 將內容輸出到(追加)txt文件保存
*
* @param content
* @throws IOException
*/
public static void outputToTxt(String content, String outputPath) throws IOException {
FileWriter fw = new FileWriter(outputPath, true);//追加內容
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.close();
fw.close();
pw.flush();
}
測試:
進行測試,讀取“E:\圖書\圖書館\小說雜文”下的所有文件,並將結果輸出到
“C:\Users\Administrator\Desktop\fileNameList.txt”中。測試代碼如下:
public static void main(String[] args) {
String filePath = "E:\\圖書\\圖書館\\小說雜文";
String outputPath1 = "C:\\Users\\Administrator\\Desktop\\fileNameList.txt";
try {
ArrayList<String> fileNameList = readFiles1(filePath, new ArrayList<String>());
System.out.println(fileNameList.size());
for (int i = 0; i < fileNameList.size(); i++) {
outputToTxt(fileNameList.get(i), outputPath1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
測試結果如下:
這是文件路徑,路徑下面有一個新建文件夾和若干個txt文件,共1086個對象,新建文件夾下面共有10個txt文件,計算可得此路徑下面共有1086+10-1=1095個txt個文件:
這是運行的控制台打印信息,共有1095條打印信息:
這是桌面的fileNameList.txt,一共有1095行:
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet">
</div>