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 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?