首页 > 解决方案 > 文件中的常规输入迭代地图

问题描述

嗨,我得到了地图并在地图上循环迭代。

def map = [file.txt : file2.txt,
file3.txt : fil4.txt,
file5.txt : file6.txt]

map.each { k,v ->
 collection = new file("k").readLines()
 collection2 = new file("v").readLines.findResult() 

def commons = collection.intersect(collection2)

}

我希望每个“公共”集合都保存到一个文件中,而不是在下一次迭代中覆盖这个文件。

有没有可能在循环中做这样的事情?

标签: groovy

解决方案


假设您已经有了要合并的文件列表,那么您唯一需要做的就是将每个文件的行写入输出文件,您可以执行以下操作:

def files = ['file1.txt', 'file3.txt', 'file2.txt']
def file = new File('output.txt')
def outputFile = file.newPrintWriter()

def mergeFile = { fileName ->   
    File sourceFile = new File(fileName) 
    sourceFile.eachLine{ line ->
        outputFile.println(line)
    }
}

files.each(mergeFile)

out.close()

这将合并所有文件的内容,还有一件事,您可能需要指定文件的文件夹,所以我建议使用接收文件夹的构造函数。

File output = new File(folder, filename)

推荐阅读