AdultBird 2015-09-03 14:32 采纳率: 77.8%
浏览 1527
已采纳

利用递归方法遍历文件存储到指定文件,为何不能遍历尽所有的指定文件?源码如下:

import java.io.*;
import java.util.*;
class FileDemo
{
public static void main(String[] args)
{
File dir=new File("D:");
//showDir(dir,0);
//sop(getSum(10));
//delFile(dir);
List list=new ArrayList();
fileToList(dir,list);
File file=new File(dir,"java文件列表.txt");
writeToFile(list,file.toString());

}
public static void writeToFile(List<File> list,String javaListFile){//创建文件写入输出流,将集合内文件的据对路径储到指定文件
    BufferedWriter bw=null;
    try{
        bw=new BufferedWriter(new FileWriter(javaListFile));
        for(File file:list){
            String path=file.getAbsolutePath();
            bw.write(path);
            bw.newLine();
            bw.flush();
        }
    }
    catch(IOException e){
            throw new RuntimeException("写入文件失败");
    }
    finally{
            try{
                if(bw!=null)
                    bw.close();
            }
            catch(IOException ex){
                throw new RuntimeException("流文件不存在");
            }
    }
}

public static void fileToList(File dir,List<File> list){//遍历目录,将指定文件存入到参数集合中
    File[] files=dir.listFiles();
    for(File file:files){
        if(file.isDirectory())
            fileToList(file,list);
        else{
            if(file.getName().endsWith(".java"))
                list.add(file);
        }
    }
}
}
  • 写回答

4条回答 默认 最新

  • havedream_one 2015-09-03 23:37
    关注

    你可以参考下改改

      import java.util.*;
    import java.io.*;
    
    public class ReadStringAndPrintPath 
    {
        public static void main(String[] args) 
        {
            System.out.println("Hello World!");
            String str = "test";
            File file = new File("a");
            File[] list = file.listFiles();
            searchString(list,str);
        }
        public static void searchString(File[] files,String str){
            for(int i = 0 ; i < files.length; i ++){
                if(files[i].isFile()){
                    //是文件,搜索是否存在字符串
                    try{
                        Scanner scan = new Scanner(files[i]);
                        while(scan.hasNext()){
                            if(scan.nextLine().indexOf(str) != -1){
                                System.out.println(files[i].getAbsolutePath());
                                break;
                            }
                        }
                    }catch(IOException ex){
                        ex.printStackTrace();
                    }
                }else{
                    //是文件夹
                    File[] list = files[i].listFiles();
                    searchString(list,str);
                }
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。