【发布时间】:2011-03-06 21:00:05
【问题描述】:
我是 Protocol Buffers 的新手,我认为这是一个不错的方法。 我创建了一个 proto 文件,并使用编译器生成了 Java bean。
使用这个 Java Bean,我初始化了对象,并尝试将其写入文件。 目的只是查看文件有多大。 我目前还没有准备好通过 HTTP 进行测试的客户端/服务器测试。 在这一点上,我只是想向我的团队展示请求/响应如何使用协议缓冲区。
我的代码是这样的:
=== 原始文件 ===
Profile {
optional string name=1
optional string id=2
message DocGuids {
required string docguids=3
}
repeated DocGuids docguids=4
}
=== 示例代码 ===
ProfileRequest.Builder profile = ProfileRequest.newBuilder();
profile.setName("John");
profile.setId("123");
for (int i=0;i<10;i++) {
ProfileRequest.DocGuids.Builder docGuids = ProfileRequest.DocGuids.newBuilder();
docGuids.setDocguid(GUID.guid());
profile.addDocguids(docGuids);
}
//write to disk
try {
// Write the new address book back to disk.
FileOutputStream output = new FileOutputStream("c:\\testProto.txt");
DataOutputStream dos = new DataOutputStream(output);
dos.write(profile.build().toByteArray());
dos.close();
output.close();
} catch (Exception e) {
}
当我检查 testProto.txt 时,我看到该文件被写入为文本文件,而不是二进制文件,尽管我使用了 toByteArray。
有人可以帮忙吗?
谢谢
顺便说一下,这是读取这个文件的代码:
// Read from disk
FileInputStream input = new FileInputStream("c:\\testProto.txt");
DataInputStream dis = new DataInputStream(input);
profileBuild.mergeFrom(dis);
dis.close();
input.close()
我能够读取对象并获得值就好了,但只是想知道这是否是正确的做法?
【问题讨论】:
标签: protocols protocol-buffers