我想使用ZipOutputStream来编写大块的字节,这是首选的吗?
FileOutputStream fos = new FileOutputStream(fileName);
...
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
或者
ZipOutputStream zos = new ZipOutputStream(new PrintStream(fos));
答案 0 :(得分:1)
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
似乎更好,至少有两个原因:
PrintStream
即使在流中写入时出错,也不会抛出IOException。如果出现错误,您可能会在不知道的情况下在zip内容中出现错误,从而导致邮件损坏。
PrintStream
的写入应该更加昂贵,因为PrintStream打印的所有字符都使用平台的默认字符编码转换为字节。 Javadoc建议在需要编写字符而不是字节的情况下使用PrintWriter类。
您可以对其进行基准测试以确认。