0

ディレクトリに含まれるファイルのリストを取得する必要があります。

私がすることは:

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

問題は、これを行うと、一時的なファイルなど、表示されないはずのファイルも印刷されることです。

私のテストディレクトリでは、ciaotestをファイルする必要がありますが、コードを実行するとciaociao~test~、およびファイルを変更すると他のものが表示されます (それらはバッファファイルだと思います)。

では、ファイルシステムをブラウズしているかのように、どうすれば真のファイルだけを取得できますか?

4

3 に答える 3

4

属性 (名前を含む) が一連の条件に従うファイルのみを一覧表示する場合は、引数として.listFiles()a を取る別のバージョンを使用する必要があります。このインターフェイスには、ファイルを一覧表示できる場合に true を返すFileFilter唯一のメソッドがあります。accept()

この簡単な例では、名前が で終わるファイルを除外します~

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

FileFilter上記のものよりも複雑な場合は、それを変数に外部化することを検討してください (フィルターprivate static finalが変更されない場合)。

于 2013-01-10T21:16:56.850 に答える
1

表示されていないファイルはおそらく非表示になっています。次のことを確認できます。

File file = ...;
if(file.isHidden()){...}
于 2013-01-10T21:19:18.797 に答える
1

使用する

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

隠しファイルを抑制します。

さらに確認できます

index.isDirectory()

サブディレクトリをリストしたくない場合。

しかし、あなたが本当の (またはきれいな、または素敵な) ファイルと呼ぶものをあなたの考えを読み取ることができるメソッドを期待しないでください。

除外するファイルを指定したら、そのためのフィルターを自分で作成できます。

詳細については、を参照java.io.FileFilterしてください。

于 2013-01-10T21:16:52.837 に答える