[javaSE] IO流(递归查找指定文件)详解编程语言

递归方法,实现查找目录中以.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(); 
    } 
}

[javaSE] IO流(递归查找指定文件)详解编程语言

加入行号,2万6000行数据,几秒的时间就能找到

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12656.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论