任何人都可以发布一个简单的片段来做到这一点吗?
文件是文本文件,因此压缩会很好,而不仅仅是存档文件。
我将文件名存储在可迭代对象中。
最佳答案
目前没有任何方法可以从标准 Scala 库中执行此类操作,但它非常易于使用 java.util.zip
:
def zip(out: String, files: Iterable[String]) = {
import java.io.{ BufferedInputStream, FileInputStream, FileOutputStream }
import java.util.zip.{ ZipEntry, ZipOutputStream }
val zip = new ZipOutputStream(new FileOutputStream(out))
files.foreach { name =>
zip.putNextEntry(new ZipEntry(name))
val in = new BufferedInputStream(new FileInputStream(name))
var b = in.read()
while (b > -1) {
zip.write(b)
b = in.read()
}
in.close()
zip.closeEntry()
}
zip.close()
}
我在这里专注于简单而不是效率(没有错误检查并且一次读写一个字节并不理想),但它有效,并且可以很容易地改进。
关于scala - 如何使用 scala 将多个文件归档到 .zip 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985684/