程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> [javaSE] IO流(遞歸查找指定文件),javaseio

[javaSE] IO流(遞歸查找指定文件),javaseio

編輯:JAVA綜合教程

[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行數據,幾秒的時間就能找到

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved