Java和文件列表

时间:2013-01-10 21:13:17

标签: java file-io io

我应该得到目录中包含的文件列表。

我的工作是:

    File file = new File(PATH);
    for (File index:file.listFiles)
        System.out.println(index.toString());

问题在于,这样我打印的文件也是我不应该看到的,例如临时的。

在我的测试目录中,我必须提交: ciao test ,但是当我运行我的代码时,我看到 ciao ciao~ test~ ,还有其他东西,如果我修改一个文件(我想它们是缓冲区文件)。

那么,我怎样才能获得 true 文件,就像我在浏览我的文件系统一样?

3 个答案:

答案 0 :(得分:4)

如果只想列出其属性(包括名称)服从一组条件的文件,则需要使用另一个.listFiles()版本,该版本以FileFilter为参数。此接口具有唯一的accept()方法,如果可以列出该文件,则返回true。

这个简单的示例将过滤掉名称以~

结尾的文件
file.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return !pathname.getName().endsWith("~");
    }
})

如果您的FileFilter比上面的更复杂,请考虑将其外展为变量(private static final,如果过滤器永远不会更改)。

答案 1 :(得分:1)

使用

if (!index.isHidden()) {
    System.out.println(index.toString());
}

禁止隐藏文件。

您还可以查看

index.isDirectory()

如果你不想列出子目录。

但是不要指望一种方法可以读出你所谓的真实(或干净或漂亮)文件。

一旦你现在要排除哪些文件,你可以为自己编写一个过滤器。

有关详情,请参阅java.io.FileFilter

答案 2 :(得分:1)

您看不到的文件可能已隐藏,您可以查看:

File file = ...;
if(file.isHidden()){...}