Je suis nouveau à Protocol Buffers et voyant cela comme une bonne approche à suivre. J'ai créé un fichier proto, et en utilisant le compilateur, j'ai généré des beans Java.Protocole Buffers à classer?
En utilisant ces Java Beans, j'initialise l'objet et j'essaie de l'écrire dans un fichier. Le but est juste de voir la taille du fichier. Je n'ai pas de test client/serveur prêt pour le test via HTTP. J'essaie simplement de montrer à mon équipe à quel point la requête/réponse ressemble à l'utilisation de tampons de protocole.
code J'est quelque chose comme ceci:
fichier Proto === ===
Profile {
optional string name=1
optional string id=2
message DocGuids {
required string docguids=3
}
repeated DocGuids docguids=4
}
=== === Exemple de code
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) {
}
Quand je vérifie testProto .txt, j'ai vu le fichier a été écrit en tant que fichier texte, pas de fichier binaire, même si j'utilise toByteArray.
Quelqu'un pourrait-il aider?
Merci
Soit dit en passant, c'est le code pour lire ce fichier:
// Read from disk
FileInputStream input = new FileInputStream("c:\\testProto.txt");
DataInputStream dis = new DataInputStream(input);
profileBuild.mergeFrom(dis);
dis.close();
input.close()
Je suis capable de lire l'objet et obtenir la valeur très bien, mais simplement se demander si tel est le approche correcte à faire?
Voici le ouput:! 123John # i0ad0290e000001296033cf0b540e7ae7 # i0ad0290e000001296033cf0b540e7ae8 # alhtough avant et après 123 (et John), il y a un certain caractère bizarre dans mon TextPad que je ne suis pas en mesure de copier ici. Je pense qu'il pourrait s'agir d'un caractère "tab" – user373307
@workrelated: Je vous suggère de regarder le fichier dans un éditeur hexadécimal. Ce n'est pas parce qu'un fichier a un texte reconnaissable qu'il s'agit d'un fichier texte. Jetez un oeil à cela en conjonction avec la spécification de format pb. –
Merci Jon. Je mets à jour la question ci-dessus avec mon exemple de code de lecture de ce fichier. Est-ce une bonne approche à faire? – user373307