2014年7月10日木曜日

えー、GZIPInputStreamって

zip = new GZIPInputStream(new BufferedInputStream(fis));

int nLen = 0;
while(true)
{
    int nLen2 = zip.read(babuf, nLen, babuf.length - nLen);
    if (nLen2 <= 0)
        break;
    nLen += nLen2;
    Log.d(TAG, String.format("zip read length = %d this time %d bytes", nLen, nLen2));
}

read時にどんなに大きなバッファを用意していても、Open時のバッファ指定より大きいデータを読み取ってくれないのね。知らんかった。内部バッファと外部バッファの差を吸収してくれないのかよ。

zip = new GZIPInputStream(new BufferedInputStream(fis), 0x10000);

で64kまでは1回で読み取ってくれるね。

あー、気づかなかった。30分は悩んだね。だからJavaは嫌いよ。ライブラリの中身がどうなってるか判らないからね。サンプルも嘘ばっかりだし。愚痴っても仕方ないね。みんなよくやってるね。

0 件のコメント:

コメントを投稿