ZipOutputStream:BufferedOutputStream vs PrintStream

时间:2016-08-11 18:25:51

标签: java fileoutputstream zipoutputstream

我想使用ZipOutputStream来编写大块的字节,这是首选的吗?

FileOutputStream fos = new FileOutputStream(fileName); 

...

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

或者

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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