1. 程式人生 > >Java遞歸讀取文件路徑下所有文件名稱並保存為Txt文檔

Java遞歸讀取文件路徑下所有文件名稱並保存為Txt文檔

file flush .get rect 新建文件夾 row oid trac ktr

本文用遞歸的方法實現讀取一個路徑下面的所有文件並將文件名稱保存到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 = null;
        PrintWriter pw = null;
        fw = new FileWriter(outputPath, true);//追加內容
        pw = new PrintWriter(fw);
        pw.println(content + "\n");
        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行:
技術分享圖片

Java遞歸讀取文件路徑下所有文件名稱並保存為Txt文檔