在kotlin中,如果我有一个现有文件,该如何压缩它。例如,我创建一个新的File()并将内容附加到该文件。现在将内容附加到它之后。我想压缩该文件。
我遇到的所有其他解决方案都没有帮助。我认为这很简单,但是我发现如何执行此操作很麻烦。
val fdir = filesDir
fdir.resolve("sometextfile.txt").takeIf { !it.exists() }?.appendText(text)
val sometextfile = fdir.resolve("sometextfile.txt")
// I now want sometextfile.txt in a zip file called somezipfile.zip
如何将sometextfile.txt放入一个名为somezipfile.zip的zip文件中,以便在解压缩时包含sometextfile.txt?
最佳答案
一个非常简单的方法:
fun zip(inFile: Path, outFile: Path) {
runCatching {
val contents = Files.readAllBytes(inFile)
val out = Files.newOutputStream(outFile, StandardOpenOption.CREATE)
ZipOutputStream(out).use { zipStream ->
val zipEntry = ZipEntry(inFile.fileName.toString())
zipStream.putNextEntry(zipEntry)
zipStream.write(contents)
}
}.onFailure { exception ->
// exception.printStackTrace()
}
}
另外,请确保始终在UI线程之外执行I / O操作。
参考:https://developer.android.com/reference/java/util/zip/ZipOutputStream?hl=en