java protobuf使用__Java

來源:互聯網
上載者:User
下載
https://github.com/google/protobuf/releases

安裝

$ ./configure
$ make
$ make check
$ make install

 建立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 

下載jar包

http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/3.1.0


PB序列化還原序列化寫入檔案測試

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 IOException {// TODO Auto-generated method stubPersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();builder.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 blocke.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 blocke.printStackTrace();}finally{try {fo.close();} catch (IOException e) {// TODO Auto-generated catch blocke.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());}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{} } }

轉載:http://blog.csdn.net/luyee2010/article/details/8206090

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.