【发布时间】:2014-02-22 23:25:09
【问题描述】:
我正在尝试解压缩/提取我的程序中提供的包含二进制文件的存档。 从 jar 到文件的复制工作正常,但是当我尝试提取 zip 时,它意外返回并且只复制文件的一半,而完全忽略另一个文件。
这里有更详细的描述: 我正在尝试从程序的 .jar 中解压缩复制到文件夹的存档。 我用来解压的程序是“解压”(Linux 自带)。 用于提取的命令是:
unzip -o <file>.zip
这正是我在以下代码中使用的:
ProcessBuilder process = new ProcessBuilder();
process.command("unzip", "-o", adb_tools.toString());
process.redirectErrorStream(true);
Process pr = process.start();
String line;
BufferedReader processReader = new BufferedReader(new InputStreamReader(pr.getInputStream()));
while ((line = processReader.readLine()) != null)
log(Level.INFO, "Extracting Android Debugging Bridge: " + line, true);
log(Level.INFO, "Android Debugging Bridge has been extracted and installed to system. Marking files as executable...", true);
pr.destroy();
processReader.close();
当我直接通过终端使用命令时,一切正常,两个文件都被提取和膨胀,并且是可执行的,但是,如上所述,当我在 Java 中使用命令时,只有一个文件被复制(甚至只进行了一半),而另一个文件被完全忽略。
我怎样才能解决这个问题,并防止这种情况再次发生,使用不同的程序?
提前致谢!
【问题讨论】:
标签: java linux terminal zip unzip