以编程方式执行解压缩命令
Posted
技术标签:
【中文标题】以编程方式执行解压缩命令【英文标题】:Executing unzip command programmatically 【发布时间】:2015-12-04 12:10:14 【问题描述】:我创建了一个 shell 脚本,其中有一个简单的语句 unzip -o $1
,在通过终端运行并将 .zip 文件作为参数传递时,它工作正常,需要 5
秒来创建解压缩文件夹。现在我尝试在 scala 中做同样的事情,我的代码如下:
object ZipExt extends App
val process = Runtime.getRuntime.exec(Array[String]("/home/administrator/test.sh", "/home/administrator/MyZipFile_0.8.6.3.zip"))
process.waitFor
println("done")
现在,每当我尝试执行 ZipExt 时,它都会永远卡在 process.waitFor
中,并且未达到 print
语句。我已尝试在本地和服务器上使用此代码。我尝试了其他可能性,例如在 shellscript 中创建局部变量,包括 shell 脚本中的退出语句,尝试解压缩除地雷之外的其他 .zip
,甚至有时正在执行 print
语句但没有创建解压缩文件。所以我很确定以编程方式执行unzip
命令来解压缩文件有什么问题,或者还有其他方法可以以编程方式解压缩压缩文件。我已经被这个问题困扰了2天,所以有人请帮忙..
【问题讨论】:
【参考方案1】:您提供给我们的信息似乎不足以重现问题:
% mkdir 34088099
% cd 34088099
% mkdir junk
% touch junk/a junk/b junk/c
% zip -r junk.zip junk
updating: junk/ (stored 0%)
adding: junk/a (stored 0%)
adding: junk/b (stored 0%)
adding: junk/c (stored 0%)
% rm -r junk
% echo 'unzip -o $1' > test.sh
% chmod +x test.sh
% scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_66).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val process = Runtime.getRuntime.exec(Array[String]("./test.sh", "junk.zip"))
process: Process = java.lang.UNIXProcess@35432107
scala> process.waitFor
res0: Int = 0
scala> :quit
% ls junk
a b c
我建议在您自己的机器上尝试相同的复制。如果它对你也成功,那么开始系统地减少成功案例和失败案例之间的差异,一次一步。这将有助于缩小可能的原因。
【讨论】:
对不起,我是AFK,会尽快尝试 出了什么问题? no 而不是使用unzip
inside shell 命令我现在以编程方式解压缩了.zip
文件
大声笑@Seth Tisue,看看这个***.com/questions/30640627/…以上是关于以编程方式执行解压缩命令的主要内容,如果未能解决你的问题,请参考以下文章