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

Joh*_*oth 101 java directory file

可能重复:
迭代java中的目录的最佳方法?

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

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

Mik*_*uel 171

如果您有目录名称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.
  }
Run Code Online (Sandbox Code Playgroud)


jom*_*ora 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());
        }
Run Code Online (Sandbox Code Playgroud)

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

  • @ john-assymptoth,没有这个lib,只有java实现的util,如果库包含很多文件,你将在`StackOverflowError`中驱动.(http://java.sun.com/javase/6/docs/api/java/lang/StackOverflowError.html) (3认同)

WuH*_*ted 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]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Amo*_*are 5

使用java.io.File.listFiles

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