org.xerial.snappy 中的 java.lang.NegativeArraySizeException解压大文件时

问题描述

我在尝试使用 SnappyInputStream 解压缩大文件时遇到此错误。 sample.snappy 的大小为 10 GB。有办法解决吗?

我使用这个 https://github.com/xerial/snappy-java 来压缩和解压缩 snappy 文件

代码来源:来源

a       b      c         Is found
mike   1334   mike1334     yes

错误日志:

String fileName = "sample.snappy";
SnappyInputStream sis = new SnappyInputStream(new FileInputStream(fileName));
byte[] buffer = new byte[4096];
int len = 0;
while ((len = sis.read(buffer)) != -1) {
    System.out.println(new String(buffer,len));
}

第 116 行:

Exception in thread "main" java.lang.NegativeArraySizeException
        at org.xerial.snappy.SnappyInputStream.readFully(SnappyInputStream.java:116)
        at org.xerial.snappy.SnappyInputStream.readHeader(SnappyInputStream.java:88)
        at org.xerial.snappy.SnappyInputStream.<init>(SnappyInputStream.java:58)

compressed一个字节数组。

我假设 byte[] newBuf = new byte[(compressed.length * 2)]; 大于 compressed.length*2,后者会滚动到负数。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...