gpt4 book ai didi

java - 7Zip 在处理大型 zip 文件压缩后不退出

转载 作者:行者123 更新时间:2023-11-30 09:51:42 26 4
gpt4 key购买 nike

我正在windows平台上写一个java程序。我需要将某些文件压缩成 zip 存档。我正在使用 ProcessBuilder 启动一个新的 7zip 进程:

ProcessBuilder processBuilder = new ProcessBuilder("7Z","a",zipPath,filePath);
Process p = processBuilder.start();
p.waitFor();

问题是 7zip 进程在完成后永远不会退出。它确实创建了所需的 zip 文件,但之后就卡在那里了。这意味着 waitFor() 调用永远不会返回,我的程序会卡住。请建议修复或解决方法。

最佳答案

这是我最后做的。

我无法设置环境变量,所以我必须为 7zip 设置 c: 路径。

    public void zipMultipleFiles (List<file> Files, String destinationFile){
String zipApplication = "\"C:\\Program Files\7Zip\7zip.exe\" a -t7z";
String CommandToZip = zipApplication + " ";
for (File file : files){
CommandToZip = CommandToZip + "\"" + file.getAbsolutePath() + "\" ";
}
CommandToZip = CommandToZip + " -mmt -mx5 -aoa";
runCommand(CommandToZip);
}

public void runCommand(String commandToRun) throws RuntimeException{
Process p = null;
try{
p = Runtime.getRuntime().exec(commandToRun);
String response = convertStreamToStr(p.getInputStream());
p.waitFor();
} catch(Exception e){
throw new RuntimeException("Illegal Command ZippingFile");
} finally {
if(p = null){
throw new RuntimeException("Illegal Command Zipping File");
}
if (p.exitValue() != 0){
throw new Runtime("Failed to Zip File - unknown error");
}
}
}

convert to string 函数可以在这里找到,这是我用作引用的。 http://singztechmusings.wordpress.com/2011/06/21/getting-started-with-javas-processbuilder-a-sample-utility-class-to-interact-with-linux-from-java-program/

关于java - 7Zip 在处理大型 zip 文件压缩后不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com