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

时间:2012-03-27 03:17:05

标签: java zip

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

 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小时才能完成拉链。知道为什么吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

尝试使用Java的java.util.zip API来操作.zip文件,看看tutorial