2

File 変数をインスタンス化しようとしていますが、ファイル名の一部しか知りません。つまり、ファイル名が「pass_231_」で始まることは知っていますが、残りは知りません。これは可能ですか?

4

5 に答える 5

3

どのディレクトリにあるかがわかっている場合は、はい。次を使用できますFileFilter

final String prefix = "pass_231_"
File dir = ... ;
File[] candidates = dir.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().startsWith(prefix);
    }
});
// candidates will contain all files starting with "pass_231_"

再帰的に (サブフォルダーを含めて) 検索する必要がある場合は、次のようにすることができます。

String prefix = "pass_231_";
File dir = ... ;
List<File> candidates = new ArrayList<File>();
searchRecursively(dir, prefix, candidates);
// candidates will contain all files starting with "pass_231_"

次に、searchRecursively次のようになります。

public static void searchRecursively(File dir, final String prefix, List<File> candidates) {
    File[] matches = dir.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().startsWith(prefix);
        }
    });
    candidates.addAll(Arrays.asList(matches));
    File[] subdirs = dir.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.isDirectory();
        }
    });
    for (File subdir : subdirs) {
        searchRecursively(subdir, prefix, candidates);
    }
}
于 2012-10-15T17:53:08.043 に答える
1

File.listFiles(filter)ファイルを含むディレクトリでメソッドを使用してみてください。詳細はこちら

于 2012-10-15T17:52:03.600 に答える
0

フォルダー内のすべてのファイルを一覧表示し、完全な名前がわかったら、ファイルを開くことができます。

File.list()メソッドを参照してください。

于 2012-10-15T17:51:58.940 に答える
0

フォルダーに対してフィルターを実行する必要がありますが、フィルターが複数のファイルを返す場合は、開くファイルを決定する必要があります。

于 2012-10-15T17:52:24.363 に答える