簡體   English   中英

以編程方式執行解壓縮命令

[英]Executing unzip command programmatically

我已經創建了一個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腳本中的exit語句,試圖解壓縮除我的之外的其他.zip ,甚至有時執行print語句,但未在其中創建解壓縮的文件。 所以我很確定以編程方式執行unzip命令來解壓縮文件有問題,或者有其他方法可以以編程方式解壓縮壓縮后的文件。我被這個問題困擾了大約2天,所以請plz幫助。

您提供給我們的信息似乎不足以重現該問題:

% 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

我建議您在自己的機器上嘗試同樣的復制。 如果它也為您成功,則可以系統地減少成功案例和失敗案例之間的差異,一次一步。 這將有助於縮小可能原因的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM