如何在Java中迭代某个目录的文件? [复制]
Posted
技术标签:
【中文标题】如何在Java中迭代某个目录的文件? [复制]【英文标题】:How to iterate over the files of a certain directory, in Java? [duplicate] 【发布时间】:2011-06-22 11:39:30 【问题描述】:可能重复:Best way to iterate through a directory in java?
我想使用 Java 处理某个目录中的每个文件。
最简单(也是最常见)的方法是什么?
【问题讨论】:
重复:***.com/questions/3154488/… 这是重复的,但不是关于深度遍历的问题(“包括所有子目录中的文件)。请参阅How do I iterate through the files in a directory in Java? 【参考方案1】:如果你有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.
【讨论】:
Javado 在 listFiles() 中说:“表示目录本身和目录父目录的路径名不包含在结果中。” 仅供参考,如果你想要当前文件夹,你可以使用`new File(".");'【参考方案2】:我想有很多方法可以制作您想要的东西。这是我使用的一种方式。使用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"
【讨论】:
@john-assymptoth,如果库包含大量文件,则如果没有这个库和只有 java 实现的 util,您将在***Error
中驱动。 (java.sun.com/javase/6/docs/api/java/lang/…)
在 commons.io
的最新版本 (2.6) 中,您的调用看起来像 FileUtils.iterateFiles(new File("C:/"), null, null)
(忽略子目录)或例如 FileUtils.iterateFiles(new File("C:/"), new SuffixFileFilter(".java"), null)
以对文件扩展名应用过滤器。【参考方案3】:
这是一个列出我桌面上所有文件的示例。您应该将路径变量更改为您的路径。
不要使用 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]);
【讨论】:
【参考方案4】:使用java.io.File.listFiles 或者如果您想在迭代之前过滤列表(或任何更复杂的用例),请使用 apache-commons FileUtils。 FileUtils.listFiles
【讨论】:
listFiles
被覆盖以采用文件过滤器或文件名过滤器,因此如果您只想过滤,则无需使用 apache-commons。虽然它是一个很好的图书馆。以上是关于如何在Java中迭代某个目录的文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将文件保存到在 REST URL 请求中下载的某个文件夹? [复制]