Zstd 解压错误 - 未知的帧描述符

问题描述

我正在尝试通过以下方式解压缩 .zst 文件

public byte[] decompress() {
byte[] compressedBytes = Files.readAllBytes(Paths.get(PATH_TO_ZST));
final long size = Zstd.decompressedSize(compressedBytes);
return Zstd.decompress(compressedBytes,(int)size);
}

我遇到了这个:

com.github.luben.zstd.ZstdException: 未知帧描述符 [java] com.github.luben.zstd.ZstdDecompressCtx.decompressByteArray(ZstdDecompressCtx.java:157) [java] com.github.luben.zstd.ZstdDecompressCtx。解压缩(ZstdDecompressCtx.java:214)[java]

有没有人遇到过类似的情况?谢谢!

解决方法

该错误意味着 zstd 无法识别帧的前 4 个字节。这可能是因为:

  1. 数据不是zstd格式,
  2. zstd 帧末尾有多余的数据。

您还需要检查 Zstd.decompressedSize()0 输出,这意味着帧已损坏,或者帧头中不存在大小。请参阅documentation

相关问答

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