gpt4 book ai didi

java: 协议(protocol)消息标签在读取 .pb 文件时有无效的线路类型错误

转载 作者:行者123 更新时间:2023-11-30 06:52:54 25 4
gpt4 key购买 nike

我尝试读取 .pb 扩展文件。具体来说,我想阅读 this dataset (在 .tgz 中)。

我写了下面的代码:

Path path = Paths.get(filename);
byte[] data = Files.readAllBytes(path);
Document document = Document.parseFrom(data);

但随后我收到以下错误。

com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.

最后一行代码导致了这个错误,但我不知道如何解决。

最佳答案

您的文件实际上是“定界”格式:每个文件包含多条消息,每条消息都有一个长度前缀。

InputStream stream = new FileInputStream(filename);
Document document = Document.parseDelimitedFrom(steam);

继续调用 parseDelimitedFrom(stream) 以读取更多消息,直到它返回 null(文件结尾)。

另请注意,我查看的文件 -- heldout_relations.tgz 中的 testNegative.pb -- 似乎包含 Relation 的实例,不是 文档。确保您正在解析正确的类型,因为 protobuf 实现无法分辨差异——如果您解析错误的类型,您将得到垃圾。

关于java: 协议(protocol)消息标签在读取 .pb 文件时有无效的线路类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com