Download
Https://github.com/google/protobuf/releases
Installation
$./configure
$ make
$ make Check
$ make Install
New Msg.proto
Option Java_package = "Com.protobuftest.protobuf";
Option Java_outer_classname = "Personprobuf";
Message person {
Required String name = 1;
Required Int32 id = 2;
Optional String email = 3;
Enum Phonetype {
MOBILE = 0;
home = 1;
WORK = 2;
}
Message PhoneNumber {
Required String number = 1;
Optional Phonetype type = 2 [default = home];
}
Repeated PhoneNumber phone = 4;
Message Countryinfo {
Required String name = 1;
Required String code = 2;
Optional int32 number = 3;
}
}
Message AddressBook {
Repeated person person = 1;
}
Protoc--java_out=./src Msg.proto
Download jar Packs
http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/3.1.0
PB Serialization Deserialization write file Test
Package com.protobuftest.protobuf;
Import Java.io.BufferedReader;
Import Java.io.BufferedWriter;
Import Java.io.FileInputStream;
Import java.io.FileNotFoundException;
Import Java.io.FileOutputStream;
Import Java.io.FileReader;
Import Java.io.FileWriter;
Import java.io.IOException;
Import java.util.List;
Import com.google.protobuf.InvalidProtocolBufferException;
Import Com.protobuftest.protobuf.PersonProbuf;
Import Com.protobuftest.protobuf.PersonProbuf.Person;
Import Com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber; public class TESTPB {/** * @param args * @throws ioexception/public static void main (string[] args) throws Ioexc eption {//TODO auto-generated method stub PersonProbuf.Person.Builder Builder = PersonProbuf.Person.newBuilder ();
Er.setemail ("kkk@email.com");
Builder.setid (1);
Builder.setname ("testname"); Builder.addphone (PersonProbuf.Person.PhoneNumber.newBuilder (). Setnumber ("131111111"). SetType (
PersonProbuf.Person.PhoneType.MOBILE)); Builder.addphone (PersonProbuf.Person.PhoneNumBer.newbuilder (). Setnumber ("011111"). SetType (PersonProbuf.Person.PhoneType.HOME));
Person person = builder.build ();
byte[] buf = Person.tobytearray ();
/* try {person person2 = PersonProbuf.Person.parseFrom (BUF);
System.out.println (Person2.getname () + "," + Person2.getemail ());
list<phonenumber> lstphones = Person2.getphonelist (); for (PhoneNumber phonenumber:lstphones) {System.out.println (Phonenumber.getnumber ());}}
catch (Invalidprotocolbufferexception e) {//TODO auto-generated catch block E.printstacktrace ();}
* * SYSTEM.OUT.PRINTLN (BUF);
FileInputStream Fs=null;
FileOutputStream Fo=null;
try {fo=new FileOutputStream ("D:\\test3");
Fo.write (BUF);
catch (IOException e) {//TODO auto-generated catch block E.printstacktrace ();} finally {try {fo.close ();
catch (IOException e) {//TODO auto-generated catch block E.printstacktrace ();
} try {fs=new fileinputstream ("D:\\test3");
Person Person2 = PersonProbuf.Person.parseFrom (FS); System.out.prIntln ("OK" +person2.getname () + "," + Person2.getemail ());
list<phonenumber> lstphones = Person2.getphonelist ();
for (PhoneNumber phonenumber:lstphones) {System.out.println ("OK:" +phonenumber.getnumber ()); The catch (IOException e) {//TODO auto-generated catch block E.printstacktrace ();} finally {}}}
Reprint: http://blog.csdn.net/luyee2010/article/details/8206090