すいませんお助けを...
util.zipを使いテキストが圧縮されてると初めから想定された
ZIPファイルを展開しつつ、新しいテキストファイルを作り
そこに書き出すという以下のような処理をしています。


ZipIntputStream zi = new ZipInputStream(new FileInputStream(InFile));
File OutFile = new File(出力ファイル名);
ZipEntry ze;

int buf_size = 512;
byte[] buf = new byte[buf_size];

ze = zi.getNextEntry(); // 初めのエントリを明示

BufferedInputStream bi = new BufferedInputStream(zi, buf_size);
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(OutFile));

while(bi.available() != 0 && (bi.read(buf,0,buf_size)) != -1)
 bo.write(buf,0,buf_size);

bo.close();
bi.close();
zi.close();


これで圧縮を展開しながらファイルを書き出しているのですが
1000行程度のファイルを実行したところ全く問題がなかったのですが
10000行を越えたファイルを扱った途端、すべてのデータを吐き出し終えた後に
ゴミデータが数行付加されるような現象が起こり、一向に取り除けません。
解決するにはどうしたらよいのでしょうか?