Java如何获取目录的内容?
在此示例中,您将看到如何读取目录中的文件列表。要获得此功能,我们可以使用File.listFiles()方法。此方法返回一个File对象数组,该对象可以是文件实例或目录。
package org.nhooo.example.io;
import java.io.File;
import java.io.FilenameFilter;
public class DirectoryContentExample {
public static void main(String[] args) {
File gamesDir = new File("D:/Games");
//获取上面指定目录下的文件列表
//并将其作为抽象文件对象返回。
File[] files = gamesDir.listFiles();
if (files != null) {
//迭代游戏目录目录的内容,打印
//并检查它是目录还是目录
//文件。
for (File file : files) {
System.out.println(file + " is a "
+ (file.isDirectory() ? "directory" : "file"));
}
}
//在这里,我们还获取目录中的文件列表,但是
//以String数组形式返回。
String[] strings = gamesDir.list();
if (strings != null) {
for (String file : strings) {
System.out.println("File = " + file);
}
}
//现在我们要在目录中列出文件,但是我们
//只想要一个扩展名为.doc的文件。为此,我们
//首先创建一个FilenameFilter,它将被赋予
//listFiles()方法以筛选列表过程。
//过滤规则在accept()中实现
//FilenameFilter接口的方法。
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".docx");
}
};
//在您的目录中,只给我一个.doc文件。
File[] docs = gamesDir.listFiles(filter);
if (docs != null) {
for (File doc : docs) {
System.out.println("Doc file = " + doc);
}
}
}
}这是程序的结果:
该File[]数组返回:
D:\Games\AOE is a directory D:\Games\Championship Manager 2017 is a directory D:\Games\GameHouse is a directory D:\Games\Sierra is a directory D:\Games\testing.doc.docx is a file D:\Games\TTD is a directory </pre> The `String[]` array returned: <pre> File = AOE File = Championship Manager 2017 File = GameHouse File = Sierra File = testing.docx File = TTD
File[]使用FilenameFilter结果的数组:
Doc file = D:\Games\testing.docx