帮我看看,谢谢大家。我用java代码生成了一个test.zip文件,然后调用getFileDataFromStream方法,在getFileDataFromStream方法的data = new byte[(int) zipEntry.getSize()];  zipEntry.getSize()的值为-1.若不用java代码生成test.zip文件,则没有问题。package test;import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;import org.seasar.framework.util.InputStreamUtil;
public class Test {    /**
     * @param args
     */
    public static void main(String[] args) {        File file=new File("testentry");
        ZipOutputStream zipOutputStream = null;
        try {
           // file.createNewFile();            FileWriter fw=new FileWriter(file);//建立FileWriter对象,并实例化fw
          //将字符串写入文件
          fw.write("大家好!");
          fw.write("本书是《JSP编程技巧》");
          fw.write("请多多指教!");
          fw.write("email:[email protected]");
          fw.close();
          InputStream input=new FileInputStream(file);
            zipOutputStream = new ZipOutputStream(new FileOutputStream("test.zip"));
            ZipEntry zipEntry = new ZipEntry("testentry");
            zipEntry.setComment("12121");
            zipEntry.setTime(new Date().getTime());
            zipEntry.setSize(file.length());            zipOutputStream.putNextEntry(zipEntry);            byte[] buf = new byte[1024];
            int temp=0;
            while ((temp = input.read(buf, 0, 1024)) != -1) {
                zipOutputStream.write(buf, 0, temp);
             }
//
//            while((temp=input.read())!=-1){
//                zipOutputStream.write(temp);
//            }
            input.close();
            zipOutputStream.close();
            FileInputStream fileInputStream=new FileInputStream("test.zip");            getFileDataFromStream(fileInputStream,"testentry");
            file.delete();
            file=new File("test.zip");
            file.delete();
        } catch (IOException e) {            e.printStackTrace();
        }
//        FileInputStream fileInputStream;
//        try {
//            fileInputStream = new FileInputStream("test.zip");
//
//            getFileDataFromStream(fileInputStream,"testentry");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
    }    public static byte[] getFileDataFromStream(InputStream in,
            String name) throws IOException {        byte[] data = null;
        ZipInputStream zipIn = null;
        if (in == null) {
            return null;
        }
        try {
            BufferedInputStream bi = new BufferedInputStream(in);            zipIn = new ZipInputStream(bi);            ZipEntry zipEntry = null;
            while ((zipEntry = zipIn.getNextEntry()) != null) {                if (name.equals(zipEntry.getName())) {
                    data = new byte[(int) zipEntry.getSize()];
                    zipIn.read(data, 0, (int) zipEntry.getSize());
                }
            }
        } catch (IOException e) {
            throw e;
        } finally {
            if (zipIn != null) {
                InputStreamUtil.close(zipIn);
            }
        }
        return data;
    }}