首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >列出与Java中的模式匹配的目录中的文件

列出与Java中的模式匹配的目录中的文件
EN

Stack Overflow用户
提问于 2010-01-21 00:24:31
回答 6查看 126.2K关注 0票数 93

我正在寻找一种方法来获取与给定目录中的模式(首选正则表达式)匹配的文件列表。

我在网上找到了一个使用apache的commons-io包的教程,其中包含以下代码:

代码语言:javascript
复制
Collection getAllFilesThatMatchFilenameExtension(String directoryName, String extension)
{
  File directory = new File(directoryName);
  return FileUtils.listFiles(directory, new WildcardFileFilter(extension), null);
}

但这只会返回一个基本集合(根据the docs的说法,它是java.io.File的集合)。有没有办法返回类型安全的泛型集合?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-21 00:28:10

参见File#listFiles(FilenameFilter)

代码语言:javascript
复制
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);
}
票数 145
EN

Stack Overflow用户

发布于 2016-01-12 21:58:19

从Java 8开始,您可以使用lambdas并实现更短的代码:

代码语言:javascript
复制
File dir = new File(xmlFilesDirectory);
File[] files = dir.listFiles((d, name) -> name.endsWith(".xml"));
票数 69
EN

Stack Overflow用户

发布于 2014-11-01 02:43:31

从java 7开始,你可以使用java.nio包来达到同样的效果:

代码语言:javascript
复制
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);
}
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2102952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档