protobuf 字节流写入文件,怎么是可读的
时间: 2024-10-13 09:16:05 浏览: 15
Protocol Buffers (protobuf) 是一种高效的跨语言数据交换协议,它能将结构化的数据序列化为紧凑的字节流。当你将protobuf消息写入文件时,实际上是将其转化为二进制格式,这种格式对于机器来说是直接可读的,因为protobuf的设计使得数据具有固定的结构,包括字段的数量、类型和排列。
在Java中,使用protobuf库的`com.google.protobuf.nano.IOUtil`类,你可以这样操作:
```java
// 创建一个protobuf实例
MyMessage message = ... // 初始化一个MyMessage对象
// 创建一个Outputstream
FileOutputStream fos = new FileOutputStream("message.bin");
// 使用protobuf的OutputProtoStream写入
try (DataOutputStream dos = new DataOutputStream(fos)) {
CodedOutputStream codedOut = CodedOutputStream.newInstance(dos);
message.writeTo(codedOut);
codedOut.flush();
}
// 关闭流
fos.close();
```
为了读取回protobuf对象,你需要按照同样的步骤反序列化:
```java
// 创建一个InputStream
FileInputStream fis = new FileInputStream("message.bin");
// 使用protobuf的InputProtoStream读取
try (DataInputStream dis = new DataInputStream(fis);
CodedInputStream codedIn = CodedInputStream.newInstance(dis)) {
MyMessage readMessage = MyMessage.parseFrom(codedIn);
}
```
阅读全文