gpt4 book ai didi

bash - 在 kotlin 脚本 [.kts] 中解压缩文件

转载 作者:行者123 更新时间:2023-11-29 09:07:06 28 4
gpt4 key购买 nike

我正在考虑用 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
}

关于bash - 在 kotlin 脚本 [.kts] 中解压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627357/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com