2017-04-17 44 views
0

我想使用java 8 DirectoryStream來查找匹配glob模式的文件,但我想在Groovy(至少2.4)中執行它。我很難找到一個如何去做的例子,因爲groovy中不存在try-with-resources。DirectoryStream與groovy

此外,如果搜索模式是**/*。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*/ 
          }  
         } 
        } 
+1

你能告訴你不工作的代碼? –

+0

@tim_yates我更新了試用資源的問題,我無法工作。基本上我們正在使用上週修改的文件,其格式與 – Steve

回答

1

下你想要做什麼(我覺得)

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

正如你所說的,它不會遞歸下降到目錄

+0

相匹配。但是,如果文件模式需要它,我該如何檢查目錄邊界?或者應該是一個單獨的問題? – Steve

+1

你可以使用AntBuilder? http://stackoverflow.com/questions/17206150/scan-directories-in-groovy-with-ant-builder-file-scanner'new AntBuilder()。fileScanner {fileset(dir:dir){include(name:'* */*。txt')}} .each {println it}' –

+0

我實際上試圖擺脫AntBuilder。我想使用nio Paths,因爲那時當我進行單元測試時,我可以交換內存中的文件系統。我不認爲AntBuilder是可能的。這可能是因爲我沒有「簡單」的解決方案。 – Steve