qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          ProtoBuf的java使用

          碰巧用到Proto,算是筆記吧算是筆記吧,
            windows :
            1,兩個文件:proto.exe,  protobuf-java-2.4.1.jar
            2,建立一個工程TestPb,在下面建立一個proto文件件,用來存放【。proto】文件
            3,將proto,exe放在工程下,
            4,建立一個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;
          }
            5,生成 java文件:在proto.exe目錄下:protoc  --java_out=./src   ./proto/msg.proto
          6,copy個測試示例了
            新建一個文件TestPb.java
          ***********************************************************
          package com.protobuftest.protobuf;
          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
          */
          public static void main(String[] args) {
          // TODO Auto-generated method stub
          PersonProbuf.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 block
          e.printStackTrace();
          }
          System.out.println(buf);
          }
          }
            ***********************************************
            *******************************
            生成java文件:PersonProbuf.java
            *******************************
            工程文件結構:

          posted on 2014-09-28 10:43 順其自然EVO 閱讀(609) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 雷波县| 巴马| 乌拉特前旗| 信丰县| 溧水县| 资阳市| 铜川市| 泰州市| 蓝山县| 攀枝花市| 兴安盟| 天峨县| 冕宁县| 南江县| 民县| 阳西县| 成都市| 新干县| 南通市| 涿州市| 托克逊县| 奇台县| 佛山市| 六安市| 洪洞县| 宁陕县| 尤溪县| 易门县| 大安市| 富平县| 杭锦旗| 团风县| 沽源县| 常熟市| 永康市| 浏阳市| 莱芜市| 马龙县| 汉寿县| 信宜市| 石城县|