这是不是java.util.zip的bug,望不吝赐教?看看有多少人结果和我一样

rougher 04-07-24

打开一个Zip文件,Zip里面是若干个文本文件,每个文本文件由一行一行15位数字组成。
我用循环读取文本文件里面内容,但是只能读取一定行数(字节),有的时候是246行,有的时候是230行,反正都在250行之内,字节数一般在4000以内。
然后就无法读取了,如果直接读取10000个字节(文本文件字节数肯定超过10000),只返回前3973个字节。
这是什么问题,还望高人指点。
代码如下
作为Java Application还是在B/S等架构程序中调用结果都一样
代码如下:

/*
* Created on 2004-7-23
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/

import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.*;

/**
* @author Rougher
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class TestZip {

private static ZipInputStream in = null;
private static String filename =
"c:/test.zip";
public static void main(String[] arg){
try{
TestZip.CheckFileLines();
}catch(Exception e){ e.printStackTrace();}
}


public static void OpenZipFile() throws IOException
{
in = new ZipInputStream(new FileInputStream(filename));
in.getNextEntry();
}

public static String readstr(int count)throws IOException{
if (in == null)
{
OpenZipFile();
}
byte[] buf = new byte[count];
int len = 0;
try
{
len = in.read(buf, 0, count);
}
catch(IOException e)
{
throw e;
}
if(len > 0)
{
return new String(buf).substring(0,len);
}else{
return
"";
}
}

public static void CheckFileLines() throws IOException
{
int num = 0;
String str =
"";
while((str=readstr(17)).length()== 17)
{
num++;
System.out.print(str);
}
in.close();
}
}

Test.Zip里面是一个(或n个)由几千行(只要大于300行就行)15位数字组成的文本文件。
只能读取2XX行。改变ZIP内的文件,一般读取的行数也会发生变化。