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));

少なくとも 2 つの理由でより良いと思われます。

  • PrintStreamストリームへの書き込み中にエラーが発生しても IOException をスローしません。エラーが発生した場合、知らないうちに zip コンテンツにエラーが発生し、zip が破損する可能性があります。

  • PrintStreamPrintStream によって出力されるすべての文字は、プラットフォームのデフォルトの文字エンコーディングを使用してバイトに変換されるため、書き込みはより高価になるはずです。Javadoc では、バイトではなく文字を書き込む必要がある状況では、PrintWriter クラスを使用することをお勧めします。

確認のためにベンチマークすることができます。

于 2016-08-11T19:00:11.113 に答える