我正在寻找一种方法来获取与给定目录中的模式(pref regex)匹配的文件列表.
我在网上找到了一个使用apache的commons-io包的教程,代码如下:
Collection getAllFilesThatMatchFilenameExtension(String directoryName, String extension)
{
File directory = new File(directoryName);
return FileUtils.listFiles(directory, new WildcardFileFilter(extension), null);
}
Run Code Online (Sandbox Code Playgroud)
但这只是返回一个基本集合(根据文档,它是一个集合java.io.File
).有没有办法做到这一点,返回一个类型安全的通用集合?
Kev*_*vin 120
请参见文件#listFiles(FilenameFilter).
File dir = new File(".");
File [] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
for (File xmlfile : files) {
System.out.println(xmlfile);
}
Run Code Online (Sandbox Code Playgroud)
小智 46
从Java 8开始,您可以使用lambdas并实现更短的代码:
File dir = new File(xmlFilesDirectory);
File[] files = dir.listFiles((d, name) -> name.endsWith(".xml"));
Run Code Online (Sandbox Code Playgroud)
Tar*_*rek 21
从java 7开始,你可以在java.nio包中实现相同的结果:
Path dir = ...;
List<File> files = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{java,class,jar}")) {
for (Path entry: stream) {
files.add(entry.toFile());
}
return files;
} catch (IOException x) {
throw new RuntimeException(String.format("error reading folder %s: %s",
dir,
x.getMessage()),
x);
}
Run Code Online (Sandbox Code Playgroud)
jjn*_*guy 14
以下代码将根据的accept方法创建一个文件列表FileNameFilter
.
List<File> list = Arrays.asList(dir.listFiles(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".exe"); // or something else
}}));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
95898 次 |
最近记录: |