如何在Java中遍历某个目录的文件?

问题描述:

可能重复:
Best way to iterate through a directory in java?如何在Java中遍历某个目录的文件?

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

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

+2

重复:http://*.com/questions/3154488/best-way-to-iterate-through-a-directory-in-java – Olhovsky 2011-02-07 00:55:42

如果您在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

Javado在listFiles()中说:“路径名表示目录本身和目录的父目录不包含在结果中。“ – pihentagy 2012-09-14 10:35:22

+0

@pihentagy,我不知道。谢谢。 – 2012-09-14 15:10:16

+1

fyi如果你想要当前文件夹,你可以使用`new File(“。”);' – Csanesz 2014-10-28 08:59:23

下面是我列出桌面上的所有文件的例子。您应该将路径变量更改为您的路径。

不要使用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]); 
     } 
    } 
} 

使用java.io.File.listFiles
或者
如果你要过滤迭代之前列表(或任何更复杂的用例),使用Apache公地文件实用程序。 FileUtils.listFiles

我想有很多方法可以制作你想要的东西。这是我使用的一种方法。使用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"}