用kotlin脚本解压缩文件[.kts]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用kotlin脚本解压缩文件[.kts]相关的知识,希望对你有一定的参考价值。
我正在考虑用kotlin脚本重写一些现有的bash脚本。
其中一个脚本有一个部分可以解压缩目录中的所有文件。在bash中:
unzip *.zip
有没有一种很好的方法来解压缩kotlin脚本中的文件?
答案
最简单的方法是使用exec unzip
(假设您的zip文件的名称存储在zipFileName
变量中):
ProcessBuilder()
.command("unzip", zipFileName)
.redirectError(ProcessBuilder.Redirect.INHERIT)
.redirectOutput(ProcessBuilder.Redirect.INHERIT)
.start()
.waitFor()
不同的方法,更便携(它将在任何操作系统上运行,并且不需要unzip
可执行文件存在),但功能较少(它不会恢复Unix权限),是在代码中解压缩:
import java.io.File
import java.util.zip.ZipFile
ZipFile(zipFileName).use { zip ->
zip.entries().asSequence().forEach { entry ->
zip.getInputStream(entry).use { input ->
File(entry.name).outputStream().use { output ->
input.copyTo(output)
}
}
}
}
如果您需要扫描所有*.zip
文件,那么您可以这样做:
File(".").list { _, name -> name.endsWith(".zip") }?.forEach { zipFileName ->
// any of the above approaches
}
或者像这样:
import java.nio.file.*
Files.newDirectoryStream(Paths.get("."), "*.zip").forEach { path ->
val zipFileName = path.toString()
// any of the above approaches
}
以上是关于用kotlin脚本解压缩文件[.kts]的主要内容,如果未能解决你的问题,请参考以下文章
如何解析和修改build.gradle.kts Kotlin Gradle构建脚本?
kotlin build.gradle.kts配置,支持占位符替换文件中变量
未解决的参考:build.gradle.kts中的KotlinCompilerVersion