【问题标题】:Unzip file with ProcessBuilder in Java在 Java 中使用 ProcessBuilder 解压缩文件
【发布时间】:2018-09-18 21:30:52
【问题描述】:

我修改了我在这个questions和这个one中找到的一些建议以获得下面的代码sn-p,挑战是它运行没有错误,但没有提取release.zip的内容,有什么我缺少的指针吗?

public static void main(String[] args) throws IOException, InterruptedException{

        /* Unzip the release */
        File folder = new File("./input/");
        ProcessBuilder pb = new ProcessBuilder(
                "C:/Program Files/7-Zip/7z.exe",
                "x",
                "./input/matsimInput/release.zip",
                "new");
        pb.directory(folder);
        pb.redirectErrorStream(true);

        Process pbProcess = null;
        int pbExitCode = 1;

            pbProcess = pb.start();
            pbExitCode = pbProcess.waitFor();

        if(pbExitCode != 0) {
            throw new RuntimeException("Could not unzip release for MATSim run");
        }

    }

【问题讨论】:

  • 我建议改用内置的压缩​​算法。调用外部应用程序有点疯狂。搜索“Java GZIP”或类似的内容。
  • +1 使用 Java ZIP / GZIP 本机功能从 ZIP 档案中提取数据。否则你欠我们一个解释,为什么要使用外部应用程序并使你的代码平台(Windows)依赖?
  • Google 提供了一篇不错的文章,作为最热门的文章之一,仅供您参考:baeldung.com/java-compress-and-uncompress
  • 由于您实际上并没有读取流程的输出,您如何知道它是否真的失败了?

标签: java


【解决方案1】:

使用 7-zip 是一种选择。如果你安装了java,你也可以使用jar。 修改流程构建器命令的示例: ProcessBuilder pb = new ProcessBuilder("cmd.exe","/C", "jar", "-xf" "");

这里:-x 表示提取,-f 表示文件名。 这会将文件提取到您拥有 java 程序的当前目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-27
    • 2011-10-30
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多