1

ディレクトリに次のようなファイルがあります

/home/jay/120123.txt
/home/jay/121343.txt
/home/jay/122123.txt

ここで重要なのは、ファイル名の最初の 3 桁が一意であることです。unix コマンド "ls 120*" = "120123.txt" と同じになる式言語を Java で記述する方法 (Java で EL を記述することはありません)。

したがって、 String getFile(String uniqueId) のようなものです。このメソッドは、たとえば次のように呼び出されます。

String file = getFile("120") and the file should be 120123.txt

getFile() メソッドのロジックが必要です

4

2 に答える 2

2

Java 6の場合

WildcardFileFilterこれにはApache Commons IOが役立ちます。

File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("120*.txt");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
   System.out.println(files[i].getName());
}

Java 7の場合

Files.newDirectoryStreamは次の機能を提供します。

Path dir = Paths.get(".");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "120*.txt")) {
    for (Path entry : stream) {
        System.out.println(entry.getFileName());
    }
} catch (IOException e) {

}
于 2012-11-02T22:13:27.807 に答える
2

File.listFiles(FilenameFilter) を使用します。

多分そのようなもので:

public File[] getFiles(File folder, String prefix){
    return folder.listFiles(new FilenameFilter(){
        public boolean accept(File dir, String name){
            return name.startsWith(prefix);
        }
    };
}
于 2012-11-02T22:11:38.123 に答える