调用 pkzip 的 Java 进程需要很长时间才能压缩

标签 java zip

必须在我的 java 程序中使用 pkzip 进行压缩(因为标准 java zip 例程在大型机上不起作用),我认为它可以正确压缩,但是需要很长时间才能完成。这是我的代码

 Runtime myruntime = Runtime.getRuntime();
 Process newproc = myruntime.exec("c:\\app\\pkzipc.exe -add c:\\output\\test.zip c:\\doc\\foo.pdf c:\\doc\\bar.doc"");

foo.pdfbar.doc 每个大约 20MB,如果我通过命令行执行它,那么压缩大约需要一秒钟,但是当我使用java,完成压缩需要 30 分钟到 1 小时。知道为什么吗?

最佳答案

您需要确保您正在读取子进程的标准输出和错误流。如果 pkzip 生成输出,那么它将被操作系统缓冲,如果缓冲区已满,那么您可以预期子进程将阻塞,直到缓冲区被清除。

Process 对象具有获取输入、输出和错误流的方法。创建从输出流和错误流中读取的新线程,并将它们通过管道传输到 System.outSystem.err,或者如果您不关心则丢弃输出

关于调用 pkzip 的 Java 进程需要很长时间才能压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882917/

相关文章:

java - 我可以在哪个文件中更改 java 堆大小?

go - 我是golang的新手,我正在尝试创建一个zip,该zip中必须包含一个文件夹:tosend.zip/archivos/file.png

compression - 压缩文件,仅包含什么?

java - Spring 异常评估 SpringEL 表达式

java - 在java中格式化包含日期的字符串时出现问题

Java ZipInputStream 抛出 zip.ZipException : invalid distance too far back while parsing nested zip files

python - list()连续两次应用于zip对象

objective-c - 从 Cocoa 应用程序创建 ZIP 存档

java - 如何在 Java 的按钮列表中设置一个 less 类

java - I/O 概念刷新与同步