ProtoBufs简单样例

本工程列表如下:

.
├── classes
├── com
│   └── example
│       └── tutorial
│           ├── PersonProtos.java
│           └── ProtocolBufferExample.java
├── person.proto
└── protobuf-java-2.5.0.jar


1、编写消息格式文件person.proto

package tutorial;
option java_package="com.example.tutorial";
option java_outer_classname="PersonProtos";
message Person{
        required string name=1;
        required int32 id=2;
        optional string email=3;
        message PhoneNumber{
                required string number=1;
                optional int32 type=2;
        }
        repeated PhoneNumber phone=4;
}

执行:protoc --java_out=. person.proto生成相应的java类

2、编写ProtocolBufferExample.java

package com.example.tutorial;
import com.example.tutorial.PersonProtos.Person;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ProtocolBufferExample{
        static public void main(String[] args){
                Person p1=Person.newBuilder()
                        .setName("cklsoft")
                        .setEmail("cklsoft@gmail.com")
                        .setId(123456)
                        .addPhone(Person.PhoneNumber.newBuilder()
                                        .setNumber("01234567890")
                                        .setType(1)).build();
                try{
                        FileOutputStream out=new FileOutputStream("data.txt");
                        p1.writeTo(out);
                        out.close();
                }catch (Exception e){
                        System.out.println("Write Error!");
                }

                try{
                        FileInputStream in=new FileInputStream("data.txt");
                        Person p2=Person.parseFrom(in);
                        System.out.println("p2:"+p2);
                }catch(Exception e){
                        System.out.println("Read Error!");
                }
        }
}

执行javac -cp protobuf-java-2.5.0.jar -d classes/ com/example/tutorial/*.java


3、运行程序

java -cp .:../protobuf-java-2.5.0.jar com.example.tutorial.ProtocolBufferExample 


输出:

p2:name: "cklsoft"
id: 123456
email: "cklsoft@gmail.com"
phone {
  number: "01234567890"
  type: 1
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值