如何在Java中迭代某个目录的文件?

时间:2011-02-07 00:53:09

标签: java file directory

  

可能重复:
  Best way to iterate through a directory in java?

我想使用Java处理某个目录中的每个文件。

最简单(也是最常见)的做法是什么?

4 个答案:

答案 0 :(得分:162)

如果目录名称在myDirectoryPath

import java.io.File;
...
  File dir = new File(myDirectoryPath);
  File[] directoryListing = dir.listFiles();
  if (directoryListing != null) {
    for (File child : directoryListing) {
      // Do something with child
    }
  } else {
    // Handle the case where dir is not really a directory.
    // Checking dir.isDirectory() above would not be sufficient
    // to avoid race conditions with another process that deletes
    // directories.
  }

答案 1 :(得分:32)

我想有很多方法可以制作你想要的东西。这是我使用的一种方式。使用commons.io库,您可以遍历目录中的文件。您必须使用FileUtils.iterateFiles方法,并且可以处理每个文件。

您可以在此处找到相关信息:http://commons.apache.org/proper/commons-io/download_io.cgi

以下是一个例子:

Iterator it = FileUtils.iterateFiles(new File("C:/"), null, false);
        while(it.hasNext()){
            System.out.println(((File) it.next()).getName());
        }

如果您想要过滤,可以更改null并列出一些扩展名。示例:{".xml",".java"}

答案 2 :(得分:9)

这是一个列出桌面上所有文件的示例。你应该将路径变量改为你的路径。

您应该放置自己的代码来操作文件,而不是使用System.out.println打印文件的名称。

public static void main(String[] args) {
    File path = new File("c:/documents and settings/Zachary/desktop");

    File [] files = path.listFiles();
    for (int i = 0; i < files.length; i++){
        if (files[i].isFile()){ //this line weeds out other directories/folders
            System.out.println(files[i]);
        }
    }
}

答案 3 :(得分:4)

使用java.io.File.listFiles
或者
如果要在迭代之前过滤列表(或任何更复杂的用例),请使用apache-commons FileUtils。 FileUtils.listFiles