簡體   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