Я новичок в протокольных буферах и считаю это хорошим подходом. Я создал прото-файл и с помощью компилятора сгенерировал Java-бины.
Используя этот Java Beans, я инициализирую объект и пытаюсь записать его в файл. Цель состоит в том, чтобы просто увидеть, насколько велик файл. В данный момент у меня нет готового теста клиент/сервер для тестирования через 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()
Я могу прочитать объект и получить значение просто отлично, но просто интересно, правильный ли это подход?