java中的表达式语言

java中的表达式语言,java,Java,我的目录中有如下文件 /home/jay/120123.txt /home/jay/121343.txt /home/jay/122123.txt 这里的关键是文件名的前三位数字是唯一的。如何用java编写与unix命令“ls 120*”=“120123.txt”相同的表达式语言(从未用java编写EL) 例如,类似字符串getFile(stringuniqueid)的方法将被称为 String file = getFile("120") and the file should be 1201

我的目录中有如下文件

/home/jay/120123.txt
/home/jay/121343.txt
/home/jay/122123.txt
这里的关键是文件名的前三位数字是唯一的。如何用java编写与unix命令“ls 120*”=“120123.txt”相同的表达式语言(从未用java编写EL)

例如,类似字符串getFile(stringuniqueid)的方法将被称为

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);
        }
    };
}

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

对于Java6

您可能会发现,
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());
}
File dir=新文件(“.”);
FileFilter FileFilter=新的通配符FileFilter(“120*.txt”);
File[]files=dir.listFiles(fileFilter);
对于(int i=0;i
对于Java7

提供以下功能:

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

}
Path dir=Path.get(“.”);
try(DirectoryStream=Files.newDirectoryStream(dir,“120*.txt”)){
for(路径条目:流){
System.out.println(entry.getFileName());
}
}捕获(IOE异常){
}

用于Java 6

您可能会发现,
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());
}
File dir=新文件(“.”);
FileFilter FileFilter=新的通配符FileFilter(“120*.txt”);
File[]files=dir.listFiles(fileFilter);
对于(int i=0;i
对于Java7

提供以下功能:

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

}
Path dir=Path.get(“.”);
try(DirectoryStream=Files.newDirectoryStream(dir,“120*.txt”)){
for(路径条目:流){
System.out.println(entry.getFileName());
}
}捕获(IOE异常){
}


@ Luiggimimunz也不,他问如何擦除文件系统。Scala可以考虑java中的EL吗?code>new java.io.File(“/home/jay”).listFiles filter{{uu.getName.startsWith(“120”)}
如果您使用的是java 7,您可以使用这个
Files.newDirectoryStream()
重载:,java.lang.String)如何对Files.newDirectoryStream()执行全局操作?@millimoose我能理解有两个问题:如何编写EL和方法的逻辑。答案提供给了第二个,但没有一个指向第一个。@ Luiggimimunz也没有,他问如何擦除文件系统。Scala可以考虑java中的EL吗?code>new java.io.File(“/home/jay”).listFiles filter{{uu.getName.startsWith(“120”)}
如果您使用的是java 7,您可以使用这个
Files.newDirectoryStream()
重载:,java.lang.String)如何对Files.newDirectoryStream()执行全局操作?@millimoose我能理解有两个问题:如何编写EL和方法的逻辑。提供的答案指向第二个,但没有指向第一个。我认为OP问题的关键不仅仅是如何列出文件,还有如何进行shell样式的文件名匹配,
startsWith()
不是。好吧,他的问题很令人困惑,因为他在文本中提到了globs,但是他没有将任何看起来像glob的东西传递给他假设的getFile(String)函数。最后,答案只能和问题一样好:-)我认为OP问题的关键不仅仅是如何列出文件,还包括如何进行shell样式的文件名匹配,
startsWith()
不是。好吧,他的问题相当混乱,因为他在文中提到了globs,但是他没有将任何看起来像glob的东西传递给他假设的getFile(String)函数。最后,答案只能和问题一样好:——)谢谢。我遵循通配符解决方案;这就是我想要的。但我需要零钱。它正在打印整个文件路径和名称。我只想要像120123.txt这样的文件名,而不是/home/jay120123.txtReimus——我不明白一件事。我的类路径中没有apache commons jar(commons io)。但是,在没有运行时错误的情况下,它是如何工作的呢。。它是否以某种方式包含在java6中?不需要单独的jar AFAIK。你应该检查你的导入,看看它是否正确。如果是这样的话,它一定在类路径上的某个地方。如果不是,可能是一个自定义实现,但不太可能。是的,我在导入中有它,但我不需要将那个jar放在我的类路径中吗?我的类路径中没有commons-io-1.3.2.jar。这就是让我困惑的地方。谢谢。我遵循通配符解决方案;这就是我想要的。但我需要零钱。它正在打印整个文件路径和名称。我只想要像120123.txt这样的文件名,而不是/home/jay120123.txtReimus——我不明白一件事。我的类路径中没有apache commons jar(commons io)。但是,在没有运行时错误的情况下,它是如何工作的呢。。它是否以某种方式包含在java6中?不需要单独的jar AFAIK。你应该检查你的导入,看看它是否正确。如果是这样的话,它一定在类路径上的某个地方。如果不是,可能是一个自定义实现,但不太可能。是的,我在导入中有它,但我不需要将那个jar放在我的类路径中吗?我的类路径中没有commons-io-1.3.2.jar。这就是让我困惑的地方。