AdultBird
AdultBird
采纳率77.8%
2015-09-03 14:32 阅读 1.5k
已采纳

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

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 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);
                }
            }
        }
    }
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-09-03 14:43

    丢失了哪些文件,看看是不是权限的问题,造成读取失败。

    点赞 2 评论 复制链接分享
  • a1193561652 纵横车 2015-09-03 15:16

    比如说怎么样的结构遍历不到?觉得逻辑没什么问题,倒是 File[] files=dir.listFiles();之后要检查一下files是否为null,否则遍历到空文件夹会有异常。

    点赞 评论 复制链接分享
  • AdultBird AdultBird 2015-09-04 08:19

    我D盘下又很多java文件,到现在为止,我还是没有找到没有遍历所有java文件的原因,时间紧迫,暂时不找了。有空了接着找原因!谢谢各位!

    点赞 评论 复制链接分享

相关推荐