[javaSE] IO流(遞迴尋找指定檔案),javaseio

來源:互聯網
上載者:User

[javaSE] IO流(遞迴尋找指定檔案),javaseio

遞迴方法,實現尋找目錄中以.java為尾碼的檔案路徑,並存入文字檔中

 

定義一個靜態方法fileToLine(),傳入參數:File對象目錄,List集合對象(List<File> 這樣做的目的是因為這個方法會被遞迴,因此不能在內部建立,並且List集合是引用傳遞)

 

調用File對象的listFiles()方法,擷取目錄數組File[] files

迴圈這個數組for(File file : files),迴圈中

判斷是否是目錄file.isDirectory為真,進行遞迴fileToLine(file,list)

不是目錄,判斷尾碼為”.java”檔案,加入List集合

 

資料的持久化

定義一個函數writeToFile(),傳遞參數:List<File> 集合,String的檔案名稱

定義一個BufferedWriter對象,new出來,構造參數:FileWriter對象,

for迴圈List<File>集合,迴圈中

調用File對象的getAbsolutePath()方法,得到String的檔案絕對路徑

調用BufferedWriter對象的write()方法,寫入緩衝,參數:String路徑

調用BufferedWriter對象的newLine()方法,寫入一個換行

調用BufferedWriter對象的flush()方法,重新整理緩衝

 

注意異常的捕獲,關閉緩衝

import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.ArrayList;import java.util.List;public class IOTest {    /**     * @param args     * @throws Exception      */    public static void main(String[] args) throws Exception {        File dir = new File("E:/");        List<File> result = new ArrayList<File>();        fileToLine(dir, result);        //System.out.println(result);        writeToFile(result,"E:/log.txt");    }    /**     * 遞迴尋找檔案     *      * @param dir     * @param result     */    public static void fileToLine(File dir, List<File> result) {        File[] files = dir.listFiles();        if (files != null) {            for (File file : files) {                if (file.isDirectory()) {                    // 遞迴目錄                    fileToLine(file, result);                } else {                    // 判斷尾碼,這裡可以加入其他判斷                    if (file.getName().endsWith(".java")) {                        result.add(file);                    }                }            }        }    }    /**     * 持久化資料     * @param files     * @param logName     * @throws Exception      */    public static void writeToFile(List<File> files,String logName) throws Exception{        BufferedWriter bw=new BufferedWriter(new FileWriter(logName));        for(File file:files){            String filePath=file.getAbsolutePath();            bw.write(filePath);            bw.newLine();            bw.flush();        }        bw.close();    }}

加入行號,2萬6000行資料,幾秒的時間就能找到

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.