def get(String baseUrl,List files,String targetDir) { files.each { filename -> // Goes BOOM on next line def fos = new fileOutputStream(targetDir + file.separator + filename) ...}
为什么Groovy表现得像这样,我应该怎么做呢?
解决方法 它没有,所以我假设文件包含一些东西(比如null?)[].each { println "boom" // This doesn't appear}[null].each { println "pow!" // this does}
假设它在你的文件列表中是空的,导致问题,你可以通过以下方式摆脱它们:
files.findAll().each { filename -> def fos = new fileOutputStream( new file( targetDir,filename ) ) ...
或者当然,首先使生成List的东西不添加空值
编辑
实际上,听起来你有一个带有空字符串的List ……
findAll修复程序应该仍然有效,因为在Groovy Truth下空字符串的计算结果为false
编辑2
作为快速说明,您可以更改:
def fos = new fileOutputStream( new file( targetDir,filename ) )...
至:
new file( targetDir,filename ).withOutputStream { fos -> ...
它会为你ensure the stream is closed 总结
以上是内存溢出为你收集整理的groovy – 为什么空集合上的每个闭包至少运行一次?全部内容,希望文章能够帮你解决groovy – 为什么空集合上的每个闭包至少运行一次?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)