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 件のコメント:
コメントを投稿