1

我的目录中有文件,例如

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

这里的关键是文件名的前三位是唯一的。我如何在 java 中编写表达式语言(从未在 java 中编写过 EL),这将与 unix 命令“ls 120*”=“120123.txt”相同

所以像 String getFile(String uniqueId) 这样的方法将被称为

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

我需要 getFile() 方法的逻辑

4

2 回答 2

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 回答
2

对于Java 6

您可能会发现WildcardFileFilterApache 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 回答