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