groovy排序按字母顺序排列

时间:2016-02-24 12:13:23

标签: sorting groovy

我正在更新一个groovy脚本,它在SoapUI中构建一个测试运行器套件。脚本扫描文件夹并为每个文件夹中的每个文件添加测试用例。

我试图解决的问题是脚本使用的是eachFileMatch(),它在Windows和Unix文件系统之间没有一致的行为。我需要更新脚本,以便按字母顺序列出文件。

我对groovy很新,所以我不知道从哪里开始。看到sort()方法确实存在,但我不确定我是否可以在eachFileMatch上使用它。

这是我需要修改的代码段:

new File(projectPathTest+"/nord").eachDir{dir->
  log.info("Dir > "+dir);
  operation = dir.name
  def wsdlTestCase = testSuite.addNewTestCase( operation )
  wsdlTestCase.setFailOnError(false)
  dir.eachFileMatch(~/.*_request\.xml/){file->
    // Need Alphabetically sorting here
    log.info("File >> "+file)
    addTestStep(operation, file, wsdlTestCase, projectPath, endPoint)       
  }

要做到这一点的任何出发点都会非常感谢groovy方法,因为现在我还没来得及深入研究groovy API。

此致     }

1 个答案:

答案 0 :(得分:0)

您可以收集TreeSet中的文件,这些文件将维护其排序顺序,然后遍历该集以显示或以其他方式处理您的文件集。

TreeSet<File> files = new TreeSet<File>()

dir.eachFileMatch(~/.*_request\.xml/){file->
    files << file
}

files.each { f->
    // log or do whatever with the files in order
}

如果您需要对所有文件进行此排序,则需要将TreeSet放在eachDir关闭之外。