我想使用 ZipOutputStream 写入大块字节首选什么?
FileOutputStream fos = new FileOutputStream(fileName);
...
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
或者
ZipOutputStream zos = new ZipOutputStream(new PrintStream(fos));
我想使用 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 类。
您可以对其进行基准测试以进行确认。