zoukankan      html  css  js  c++  java
  • [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();
        }
    }

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

  • 相关阅读:
    轻松记账方法(A)
    个人学习进度(第八周)
    个人学习进度(第八周)
    Web版四则运算
    个人学习进度(第七周)
    个人学习进度(第六周)
    数组的子数组和最大值
    个人学习进度(第五周)
    个人学习进度(第四周)
    个人学习进度(第三周)
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5551410.html
Copyright © 2011-2022 走看看