groovy - 文件中的常规输入迭代地图
问题描述
嗨,我得到了地图并在地图上循环迭代。
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)
}
我希望每个“公共”集合都保存到一个文件中,而不是在下一次迭代中覆盖这个文件。
有没有可能在循环中做这样的事情?
解决方案
假设您已经有了要合并的文件列表,那么您唯一需要做的就是将每个文件的行写入输出文件,您可以执行以下操作:
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)
推荐阅读
- spring - 在远程文件系统中上传文档,然后在同一事务中将文档元数据保存在数据库中?
- database - 数据库连接的最大池大小
- android - Android应用程序如何检查我是否没有使用太多电池
- java - Resin 上的 Java 版本错误
- c# - 在映射数据流中使用参数化数据集进行 ADF 转换
- visual-studio-code - 我已经删除了“.vscode-server”文件夹。但是 ssh-remote 仍然不起作用
- spring-cloud - Spring Cloud RSocket 发生了什么
- swift - 在数组/类成员中节省内存而不会损失太多性能
- java - 在java中将时间变量转换为hh:mm格式
- android - 在 Kotlin 中将 EditText(类型电话)转换为字符串