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