【问题标题】:How to get all the *.sln files from a given directory using Groovy script?如何使用 Groovy 脚本从给定目录中获取所有 *.sln 文件?
【发布时间】:2016-07-04 12:21:59
【问题描述】:

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

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

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)"), 
     ^

任何人都可以帮助我获取给定路径(包括子目录)中的所有解决方案文件

提前致谢!!

【问题讨论】:

标签: java jenkins groovy groovyshell jenkins-groovy


【解决方案1】:

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

def finder = new FileNameFinder()
def files = finder.getFileNames 'D:\\Data', '**/*.sln'
print files

【讨论】:

  • 这不会打印给定路径中的解决方案文件
  • 我已经编辑了模式 - 第一个只在根文件夹中搜索,为了搜索子文件夹,您必须添加 ** 部分。 - 我不确定在 Windows 上是否需要使用 \ 而不是 / - 我猜不是。
【解决方案2】:

应该这样做

import static groovy.io.FileType.*

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

startDir.eachFileRecurse(FILES) {
    if (it.name.endsWith('.sln')) {
        println it
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多