You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Glob模式过滤目录?仅修改Glob筛选器获取目录流

问题

我有如下示例代码:

String myGlobFilter = /*whatever*/;
DirectoryStream<Path> stream = Files.newDirectoryStream(myPathToLookIn, myGlobFilter);

请问是否仅通过修改myGlobFilter,就能让返回的DirectoryStream<Path>仅包含目录?正确的myGlobFilter写法是什么?我尝试过*/,但仍会包含文件。

回答

不行,仅靠修改Glob过滤器无法实现只筛选目录。

Glob规则仅能对路径字符串做匹配,无法区分文件系统对象的实际类型(文件/目录)。你尝试的*/之所以还会包含文件,是因为该规则只是匹配名称以/结尾的路径字符串,但实际文件系统中,文件的路径并不会带有结尾的/——本质上Glob只做字符串层面的匹配,不会校验对象的实际类型。

要仅获取目录,推荐两种可行方式:

  • 方式一:使用Files.newDirectoryStream的重载方法,传入DirectoryStream.Filter来判断对象类型:
DirectoryStream<Path> stream = Files.newDirectoryStream(myPathToLookIn, path -> Files.isDirectory(path));
  • 方式二:遍历原始的DirectoryStream,手动过滤出目录:
try (DirectoryStream<Path> stream = Files.newDirectoryStream(myPathToLookIn)) {
    for (Path entry : stream) {
        if (Files.isDirectory(entry)) {
            // 处理目标目录
        }
    }
}

内容的提问来源于stack exchange,提问作者MoxxiManagarm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:10:17