使用7zip解压缩特定文件夹的命令
我正在使用Windows,更具体地说,我正在使用process和 getRuntime()。exec()从Java程序调用
。我尝试了 cmd
命令。 ) -r
之类的选项,但不起作用。我尝试了代码行
I am working with windows to be more specific, I am invoking the cmd
Command from java program using process and getRuntime().exec()
. I tried options like -r
but its not working. I tried the code line
Process proc = prog.exec(System.getenv("ProgramFiles").concat("\\7-Zip\\7z x " + "\""+inputZIPFile+"\""+ " -o"+outputFolder+"SpecificFolder\\* -r"));
预先感谢
首先使用 ProcessBuilder
。它可以更好地处理带有空格的参数,并允许您执行诸如重定向输出流和为命令指定起始目录之类的事情。
Start by using ProcessBuilder
instead. It handles parameters with spaces better and allows you do things like redirect the output stream and specify the starting directory for the command...
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder(
System.getenv("ProgramFiles") + "/7-Zip/7z.exe",
"x",
inputZIPFile,
"-o" + outputFolder+"/SpecificFolder",
"-r"
);
pb.redirectError();
try {
Process p = pb.start();
new Thread(new InputConsumer(p.getInputStream())).start();
System.out.println("Exited with: " + p.waitFor());
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static class InputConsumer implements Runnable {
private InputStream is;
public InputConsumer(InputStream is) {
this.is = is;
}
@Override
public void run() {
try {
int value = -1;
while ((value = is.read()) != -1) {
System.out.print((char) value);
}
} catch (IOException exp) {
exp.printStackTrace();
}
System.out.println("");
}
}
您可能还需要考虑 Apache Commons Compress ,它提供对7zip的读取支持
You might also want to consider Apache Commons Compress which provides read support for 7zip