Java调用因未捕获的Java异常而终止:java.lang.RuntimeException:java.io.EOFException:ZLIB输入流的意外结束

时间:2017-07-21 06:32:44

标签: java io blob

当ZipInputStream的大小超过1 Gb时,我收到此错误,但它对500mb数据工作正常;

Java调用因未捕获的Java异常而终止:java.lang.RuntimeException:java.io.EOFException:ZLIB输入流的意外结束

conn = (oracle.jdbc.OracleConnection)new OracleDriver().defaultConnection();
        newBlob=conn.createBlob();
        InputStream is = blob.getBinaryStream();
        ZipInputStream zis = new ZipInputStream(is);
        //get the zipped file list entry
        ZipEntry ze = zis.getNextEntry();
        while (ze != null) {
            OutputStream os = newBlob.setBinaryStream(1);
            while (zis.available() != 0) {
                os.write(zis.read());
            }
            os.flush();
            ze = zis.getNextEntry();
        }
        zis.closeEntry();
        zis.close();

但如果我正在使用
newBlob = BLOB.createTemporary(conn,false,oracle.sql.BLOB.DURATION_SESSION); 这个,然后它运行正常。

请帮助。 提前致谢

1 个答案:

答案 0 :(得分:0)

使用InputStream.available()不是检测文件结尾的正确方法: InputStream.available() doesn't work