1

我想使用 ZipOutputStream 写入大块字节首选什么?

FileOutputStream fos = new FileOutputStream(fileName); 

...

ZipOutputStream zos =  new ZipOutputStream(new BufferedOutputStream(fos));

或者

ZipOutputStream zos =  new ZipOutputStream(new PrintStream(fos));
4

1 回答 1

1
ZipOutputStream zos =  new ZipOutputStream(new BufferedOutputStream(fos));

至少有两个原因似乎更好:

  • PrintStream即使在流中写入期间出现错误,也不会抛出 IOException。如果出现错误,您可能会在不知情的情况下在 zip 内容中出现错误,从而导致 zip 损坏。

  • 写入应该更昂贵,PrintStream因为 PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。Javadoc 建议在需要写入字符而不是字节的情况下使用 PrintWriter 类。

您可以对其进行基准测试以进行确认。

于 2016-08-11T19:00:11.113 回答