背景&需求
一个无层级的极简压缩,主要是用于应用的数据库以及SP导入导出使用,不希望引入三方插件库。
实现
object ZipManager { fun zip(files: Array<File>, zipFile: File) { ZipOutputStream(zipFile.outputStream()).use { output -> files.forEach { file -> file.inputStream().use { input -> val entry = ZipEntry(file.name) output.putNextEntry(entry) input.copyTo(output) } } } } fun unzip(zipFile: File): String { val parentFile = zipFile.parentFile ?: return "" val outDir = "${parentFile.absolutePath}/${zipFile.nameWithoutExtension}/" File(outDir).apply { mkdirs() } ZipFile(zipFile).use { zip -> zip.entries().asSequence().forEach { entry -> zip.getInputStream(entry).use { input -> val file = File(outDir + entry.name) file.outputStream().use { input.copyTo(it) } } } } return outDir } }
其他
应该比较好理解,用了一些 kotlin 的文件流语法糖,不支持层级是因为没有去支持,自己改改也可以的,就是一个层级嵌套问题,网上的库有点大材小用了,这个小巧好用。
以上!
本站由以下主机服务商提供服务支持:
0条评论