前言
今天在写Kotlin的时候遇到一个需求,怎么在Kotlin里面实现文件的压缩呢?
经过百度搜索以及自己探索,总结了该篇文章
技术实现
ZipOutStream
见名思意:Zip的输出流
我们看看它的构造方法
public ZipOutputStream(OutputStream out) {
this(out, StandardCharsets.UTF_8);
}
传递一个OutPutStream流,那么我们传入FileOutPutStream流
var targetZip = ZipOutputStream(FileOutputStream(zipPath))
输出流我们有了,那如何将相关文件进行压缩呢?
很简单,我们可以尝试以下方式
代码示例
var zipPath = "UPLOAD_PATH\\name.zip"
var dirFile = File("UPLOAD_PATH\\dirName")
var targetZip = ZipOutputStream(FileOutputStream(zipPath))
targetZip.setLevel(9)
for(file in dirFile.listFiles()){
var bytes = file.readBytes()
var name = file.name
targetZip.putNextEntry(ZipEntry("dirName\\name"))
targetZip.write(bytes)
targetZip.flush()
}
targetZip.close()
setLevel 设置压缩等级
putNextEntry 添加下一个键
ZipEntry Zip的键 这里可以当作:压缩文件中的文件名 ( 键值可以添加目录)
感谢观看!