この場合、Base64 でエンコードされた zlib 圧縮データの要素を含む XML ファイルを SAX で解析しています。データをデコードして解凍する方法を知っています。問題は、一度にすべてをメモリ内で実行したくないということです。私はそれをチャンクで行い、オンザフライでデコード/解凍したい-チャンクごとに。
私のアプローチはこれでした...
public void characters(char ch[], int start, int length) throws SAXException {
// make a new string from ch
// decode -- I think I need to make sure the String length is a multiple of 4?
// create ByteArrayInputStream from the String
}
読み取りの準備が整うまでFilterInputStream
倍数を保持する拡張クラスがあります。ByteArrayInputStreams
まだバグがありますが、そこまで来ています。このアプローチが理にかなっているのか、それともここで車輪を再発明しているのか疑問に思っています。これについてもっと簡単な方法はありますか?