【问题标题】:Search for file through directories通过目录搜索文件
【发布时间】:2017-01-31 10:59:38
【问题描述】:

我正在尝试在多个目录中搜索文本文件,然后将目录路径添加到数组列表中。

我该怎么做?

这是我目前所拥有的:

File folder = new File("path\\dir");
File folder1 = new File("path\\dir1");
ArrayList<File> flielist = new ArrayList<File>();
flielist.add(folder);
flielist.add(folder1);
for (int i = 0; i < flielist.size(); i++){
  File dir = flielist.get(i);
  System.out.println(dir.getName());
  if(dir.listFiles() != null){
    for (File file : dir.listFiles())
    {
      String filename = file.getName();
      if(filename.equals("rashed")){
        System.out.println("found" + file.getPath());
      }
    }
  }
}

【问题讨论】:

标签: java file search


【解决方案1】:
public class FileSearch {

    private List<String> result;

    public List<String> getResult() {
        if (result == null) {
            result = new ArrayList<String>();
        }
        return result;
    }

    public static void main(String[] args) {
        FileSearch fileSearch = new FileSearch();
        fileSearch.search(new File("C:/Users"), "rashed.txt");
        int count = fileSearch.getResult().size();
        if (count == 0) {
            System.out.println("\nNo result found!");
        } else {
            System.out.println("\nFound " + count + " result!\n");
            for (String matched : fileSearch.getResult()) {
                System.out.println("Found : " + matched);
            }
        }
    }

    public void search(File file, String filename) {
        if (file.isDirectory()) {
            System.out.println("Searching directory ... " + file.getAbsoluteFile());
            //do you have permission to read this directory?
            if (file.canRead()) {
                if (file.listFiles() != null) {
                    for (File temp : file.listFiles()) {
                        if (temp.isDirectory()) {
                            search(temp, filename);
                        } else {
                            if (filename.equalsIgnoreCase(temp.getName())) {
                                getResult().add(temp.getAbsoluteFile().toString());
                            }
                        }
                    }
                }
            } else {
                System.out.println(file.getAbsoluteFile() + "Permission Denied");
            }
        }
    }
}

【讨论】:

  • 谢谢,但仍然不起作用,我在行 :: if (filename.equalsIgnoreCase(temp.getName())) 上收到此错误 NullPointerException ??有什么想法吗?
  • 你需要设置目录路径为你的
  • 我确实做到了,只有当我删除 result.add(temp.getAbsoluteFile().toString());
猜你喜欢
  • 2020-03-29
  • 1970-01-01
  • 2021-06-20
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多