我有大量(超过200)个压缩文件。所有文件都具有相同的结构(csv数据)。我需要通过附加所有文件的内容并压缩最终文件(total.zip)来创建单个csv文件(比如total.csv)。
目前,我解压缩每个文件并将内容附加到文本文件(total.csv),最后创建total.zip。
I am wondering if there is way to improve the process by appending the zip content ?
顺便说一下,我是用Java做的。
答案 0 :(得分:0)
基于对问题的评论,我决定为您提供一些代码:
import java.io._
import java.util.zip.{ZipEntry, ZipOutputStream, ZipFile}
import scala.collection.JavaConversions._
object Merger {
implicit class StringFilePath(path: String) {
def file = new File(path)
}
def merge(zips: Seq[File], out: File) = {
val outArchive = new ZipOutputStream(new FileOutputStream(out))
outArchive.putNextEntry(new ZipEntry("merged.csv"))
zips.foreach({ zip =>
val inArchive = new ZipFile(zip)
try inArchive.entries().foreach(entry => {
val in = new BufferedReader(new InputStreamReader(inArchive.getInputStream(entry)))
in.lines()
.iterator()
.foreach(line => outArchive.write(s"$line\n".getBytes))
in.close()
})
finally {
inArchive.close()
}
})
outArchive.close()
}
def main(args: Array[String]) = merge(Seq("zipcsv.zip".file, "zipcsv1.zip".file), "merged.zip".file)
}
代码是scala,但我认为很明显没有那么多" scalish"那边的代码,因为它只是处理文件。
希望它有所帮助。