JavaのCompressorStreamFactoryを使うときの注意点

広告

Javaでbz2ファイルを読みたいので色々見ていたところ、apache.commonsのライブラリがよさそうなので使い方を適当に拾って使ってみたが、思わぬ落とし穴があったので記録しておく。

などなど例はたくさんある。GitHubにもたくさんコードがある。これらを適当にコピペして使っていたところ、不可解なバグを作ってしまった。少し調べてみるとファイルを一部分だけ読んで最後まで読んでいない。

仕方ないのでドキュメントを読んでみると

Class CompressorStreamFactory

とあった。引数を取らないコンストラクタではなく、引数にboolean decompressUntilEOFを取るコンストラクタを使わないと最後まで読まないらしい。

どういうわけかネット上で見かけるサンプルコードではCompressorStreamFactoryのコンストラクタは引数を取っていないものばかりなので、使う際には注意が必要である。