gpt4 book ai didi

java - 如何从 java 中的一个文件读取多个 protobufs?

转载 作者:行者123 更新时间:2023-12-02 01:02:24 26 4
gpt4 key购买 nike

我有一个文件“test.txt”,其中包含每行用 testMessage.writeDelimitedTo(the-DataOutputStream-that uses a new FileOutputStream pointing to the file) 编写的多个 protobuf“TestMessage”消息。如何读取 test.txt 的每一行并获取每行的 protobuf?

在包含字符串的文件上使用 bufferedreader,我会这样做:

String strLine; // What is the alternative to String?
while ((strLine = br.readLine()) != null) {
System.out.println (strLine);
TestMessage test = new TestMessage.builder();
test.parseDelimitedFrom(strLine);
}

如果我要执行此方法,我应该将类型设置为什么而不是“String”?这可能吗?

或者我不能这样做并且每个消息都必须写入一个单独的文件吗?

注意:假设 TestMessage 是唯一的消息。

最佳答案

为什么每行写每条消息?我想你可以只使用 writeDelimitedTo,然后消息可以一条一条地写。而且阅读非常简单。

User user = User.newBuilder().setUid(1).build();
User user2 = User.newBuilder().setUid(2).build();
try {
FileOutputStream output = new FileOutputStream(path);
user.writeDelimitedTo(output);
user.writeDelimitedTo(output);
user2.writeDelimitedTo(output);
output.close();
} catch (Exception e) {
System.out.print("Write error!");
}

try {
FileInputStream input = new FileInputStream(path);
while (true) {
User user_ = User.parseDelimitedFrom(input);
if (user_ == null)
break;
System.out.println("read from file: \n" + user_);
}
} catch (Exception e) {
System.out.println("Read error!");
}

关于java - 如何从 java 中的一个文件读取多个 protobufs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939140/

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