我正在寻找一种方法来获取与给定目录中的模式(首选正则表达式)匹配的文件列表。
我在网上找到了一个使用apache的commons-io包的教程,其中包含以下代码:
Collection getAllFilesThatMatchFilenameExtension(String directoryName, String extension)
{
File directory = new File(directoryName);
return FileUtils.listFiles(directory, new WildcardFileFilter(extension), null);
}
但这只会返回一个基本集合(根据the docs的说法,它是java.io.File
的集合)。有没有办法返回类型安全的泛型集合?
发布于 2010-01-21 00:28:10
参见File#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);
}
发布于 2016-01-12 21:58:19
从Java 8开始,您可以使用lambdas并实现更短的代码:
File dir = new File(xmlFilesDirectory);
File[] files = dir.listFiles((d, name) -> name.endsWith(".xml"));
发布于 2014-11-01 02:43:31
从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);
}
https://stackoverflow.com/questions/2102952
复制相似问题