我编写了一个提取文件的shell脚本文件,请参阅下文。
文件名: unzip.sh
#/bin/sh
cd /home/zip;
UNZIPDIR=/home/unzip/;
for i in *.zip; do
unzip "$i" -d "$UNZIPDIR"
rm "$i";
done;
这个shell脚本在putty上执行成功,
$> ./zip.sh
因为我想从我的java类执行这个脚本,而我已经尝试了几种方法来调用/执行shell脚本文件,但它没有执行。请参阅下面的Java代码。
//First try
File executorDirectory = new File("/home/zip");
ProcessBuilder processBuilder = new ProcessBuilder("./unzip.sh");
processBuilder.directory(executorDirectory);
Process p = processBuilder.start();
p.waitFor()
//Second try
Process p = Runtime.getRuntime().exec("/home/zip/unzip.sh");
答案 0 :(得分:0)
问题是你没有考虑到这个过程'标准输出/错误(如评论中@Yazan所述)。您需要从创建的进程中.get{Output,Error}Stream()
并从中读取它们(即使它只是丢弃它)。
然而,真正的问题是您使用外部shell脚本来完成Java本身完全可行的操作。请参阅this page,其中给出了如何使用Java代码完全提取zip文件的示例;要删除文件,请使用Files.delete()
。