google protobuf 使用过程笔记

1、下载protobuf-2.5.0.tar.gz   protoc-2.5.0-win32.zip
2、分别解压成文件夹A,文件夹B
3、将A中protoc.exe 复制到B中src目录下
4、在B/java路径 执行“mvn install”,生产jar包在target下
5、编写 一个test.proto文件

 

    option java_package = "com.proto"; 
    option java_outer_classname = "FirstProtobuf"; 
    message TestBuf  { 
      required int32 ID = 1; 
      required string Url = 2; 
    }


    
6、利用protoc.exe 生成java文件(最好在protoc.exe所在目录进行,proto文件也在一起,在此执行则不用配置前者的环境变量):
    

protoc.exe --java_out=./ test.proto  


    
7、测试(eclipse引入生成的java文件和jar包)
  

 package com.test;

    import java.io.IOException;
    import com.proto.FirstProtobuf;
    import com.proto.FirstProtobuf.TestBuf;

    public class TestProtoBuf {

        public static void main(String[] args) throws IOException {
            //序列化过程 
            //FirstProtobuf是生成类的名字,即proto文件中的java_outer_classname 
            //testBuf是里面某个序列的名字,即proto文件中的message testBuf 
            
            FirstProtobuf.TestBuf.Builder builder = FirstProtobuf.TestBuf.newBuilder();
            
            builder.setID( 123 );
            builder.setUrl("http://www.test.com");
            
            TestBuf info = builder.build();
            byte[] buf = info.toByteArray();
            
            TestBuf tb = TestBuf.parseFrom(buf);
            System.out.println( tb.getID());
            System.out.println( tb.getUrl());
            //持久化过程
            File file = new File(pathString + "test7.txt");
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GBK"), 1024);
            bw.write(Integer.toString(tb.getID()));
            bw.write("\t");
            bw.write(tb.getUrl());
            bw.newLine();// 换行
            bw.flush();
            bw.close();
        }
    }


  

附上:

proto文件中的字段类型和java中的对应关系:
详见:https://developers.google.com/protocol-buffers/docs/proto
 .proto Type     java Type     c++ Type
double     double     double
float     float     float
int32     int     int32
int64     long      int64
uint32     int     uint32
unint64     long     uint64
sint32     int     int32
sint64     long     int64
fixed32     int     uint32
fixed64     long     uint64
sfixed32     int     int32
sfixed64     long     int64
bool     boolean     bool
string     String     string
bytes     byte     string 

 

参考:

http://www.iteye.com/topic/1128881

http://blog.sina.com.cn/s/blog_653ac36d0101h9kn.html

现成jar包下载:

http://www.cnblogs.com/superbi/p/4368240.html   

转载于:https://my.oschina.net/leemoor/blog/753455

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值