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