java - 带有 groovy 的 DirectoryStream

标签 java groovy nio

我想使用 java 8 DirectoryStream 来查找与 glob 模式匹配的文件,但我想在 Groovy 中执行此操作(至少 2.4)。不过,我很难找到如何做到这一点的示例,因为 groovy 中不存在 try-with-resources。

此外,如果搜索模式是 **/*.txt 怎么办?该模式表示它应该跨越目录边界,但我对 DirectoryStream 的理解是它不会。

def recent = {File file -> new Date() - new Date(file.lastModified) < 7}
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, job.pattern)) {
                    for (Path entry : stream) {
                            if(recent){
                                /*dostuff*/
                            }       
                        }
                    }

最佳答案

以下内容符合您的要求(我认为)

Files.newDirectoryStream(dir, { f -> f.fileName ==~ /.+\.txt/ }).withCloseable { stream ->
    stream.each {
        println it
    }
}

正如你所说,它不会递归到目录

关于java - 带有 groovy 的 DirectoryStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459697/

相关文章:

java - 为什么我们在 CharBuffer 中需要 `hasArray()` 方法?

java.nio channel 缓冲区流术语

java - javac命令的简单说明

java - 如何创建类的实例而不调用其任何构造函数的代码?

java - Spring Boot + 视频错误 "video playback aborted due to a network error"

python - 在 Rexster 中测试从 Groovy 命令行创建顶点

java - 在 Java 中,监视追加文件的最佳/最安全模式是什么?

java - 将 SNAPSHOT 部署到 oss.jfrog.org (JCenter)

java - 简单的 Mockito 验证在 JUnit 中有效但在 Spock 中无效

groovy - 从没有 Runtime.exec() 的 groovy 调用 gradle 任务