0

我正在编写一个 Jenkins Groovy 脚本文件来获取*.sln给定目录(包括子目录)中的所有 .NET 项目解决方案文件()。

首先,我尝试获取给定路径中的目录列表。我使用了以下代码,它工作正常:

File folder = new File("D:\\Data");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
    if (listOfFiles[i].isFile()) {
        println("File " + listOfFiles[i].getName());
        }
    else if (listOfFiles[i].isDirectory()) {
        println("Directory " + listOfFiles[i].getName());
        }
    }

2)当修改如下代码以列出给定路径中的所有解决方案文件时,我收到错误:

File folder = new File("D:\\Data");
File[] listOfFiles = folder.listFiles();
Collection files = FileUtils.listFiles(
  folder, 
  new RegexFileFilter("^(*.sln)"), 
  DirectoryFileFilter.DIRECTORY
  );

for (int i = 0; i < files.length; i++) {
    if (files[i].isFile()) {
        println("File " + files[i].getName());
        } 
    else if (files[i].isDirectory()) {
        println("Directory " + files[i].getName());
        }
    }

错误详情:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: unable to resolve class RegexFileFilter 
 @ line 5, column 3.
     new RegexFileFilter("^(*.sln)"), 
     ^

谁能帮我在给定路径(包括子目录)中获取所有解决方案文件

提前致谢!!

4

2 回答 2

2

Simples 的解决方案是像这样使用 FileNameFinder:

def finder = new FileNameFinder()
def files = finder.getFileNames 'D:\\Data', '**/*.sln'
print files
于 2016-07-04T12:49:34.037 回答
0

这应该这样做

import static groovy.io.FileType.*

def startDir = new File("D:\\Data")

startDir.eachFileRecurse(FILES) {
    if (it.name.endsWith('.sln')) {
        println it
    }
}
于 2016-07-06T08:12:02.110 回答