File 変数をインスタンス化しようとしていますが、ファイル名の一部しか知りません。つまり、ファイル名が「pass_231_」で始まることは知っていますが、残りは知りません。これは可能ですか?
質問する
2968 次
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 に答える