繁体   English   中英

java中的表达式语言

[英]Expression Language in java

我的目录中有文件

/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()方法的逻辑

您想使用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);
        }
    };
}

对于Java 6

您可能会发现Apache Commons IO中WildcardFileFilter对此非常有用:

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) {

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM