Protocol Buffers 使用
2014-02-20 14:20
281 查看
PB是一个序列化的框架,相比其他框架来说,他更轻巧、简便,利用PB自身的语法可以快速的建立我们自己的数据结构,并且将其序列化,关于PB的语法可以参考:
http://shitouer.cn/2013/04/protocol-buffers-language-guide/
下面我们介绍他的基本使用
1、安装PB
可以到 http://code.google.com/p/protobuf/downloads/list 去下载,目前最新版本为2.5.0,因为是测试环境,我下了protoc-2.5.0-win32.zip,如果在linux下可以下载源码安装,和其他软件类似:configure 、make 、make install就可以了,在windows下的zip包可以直接解压,里面是一个可执行文件protoc.exe
2、编写proto文件
简单起见,写了个小示例,具体语法可以参考上面链接
3、生成类文件
新建一个java项目,并将protobuf-java-2.5.0.jar添加到类路径中,并把Car.java拷贝到项目中
这里我们把序列化的文件写到d:/car.txt。
测试代码如下CarWrite.java
运行结果如下:
准备写入文件
准备在文件中读取
car name:BMW
car name:black
car name:false
car id1
http://shitouer.cn/2013/04/protocol-buffers-language-guide/
下面我们介绍他的基本使用
1、安装PB
可以到 http://code.google.com/p/protobuf/downloads/list 去下载,目前最新版本为2.5.0,因为是测试环境,我下了protoc-2.5.0-win32.zip,如果在linux下可以下载源码安装,和其他软件类似:configure 、make 、make install就可以了,在windows下的zip包可以直接解压,里面是一个可执行文件protoc.exe
2、编写proto文件
简单起见,写了个小示例,具体语法可以参考上面链接
message car { required string name = 1; required string color = 2; optional bool isold = 3 [default = false ]; required int32 id = 4; }其中message为起始标识,后面跟类名,结构体定义在花括号中,required为必备选项,optional为可选项
3、生成类文件
d:> c:\Desktop\protoc.exe --java_out=. car.proto 这条命令会在d盘下生成Car.java D:\>dir Car.java 驱动器 D 中的卷是 Data 卷的序列号是 0010-7BE4 D:\ 的目录 2014/02/20 13:48 25,704 Car.java 1 个文件 25,704 字节 0 个目录 105,980,571,648 可用字节4、测试Car.java的序列化功能
新建一个java项目,并将protobuf-java-2.5.0.jar添加到类路径中,并把Car.java拷贝到项目中
这里我们把序列化的文件写到d:/car.txt。
测试代码如下CarWrite.java
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CarWrite { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub System.out.println("准备写入文件"); Car.car car = Car.car.newBuilder() .setName("BMW") .setColor("black") .setIsold(false) .setId(1).build(); FileOutputStream fos = new FileOutputStream("d:/car.txt"); car.writeTo(fos); fos.close(); System.out.println("准备在文件中读取"); FileInputStream fis = new FileInputStream("d:/car.txt"); Car.car car2 = Car.car.parseFrom(fis); System.out.println("car name:"+car2.getName()); System.out.println("car name:"+car2.getColor()); System.out.println("car name:"+car2.getIsold()); System.out.println("car id"+car2.getId()); } }
运行结果如下:
准备写入文件
准备在文件中读取
car name:BMW
car name:black
car name:false
car id1
相关文章推荐
- Felica的文件系统
- Jquery使用小技巧
- jsp更多功能实现
- FeliCa简介
- HTML font-family 中文字体的英文
- 学习css去w3school.cc
- 花了一年时间开发的TTFEditor 字体编辑器
- 关于IE里模态窗口的一些问题
- jsp 指令
- JS 异步队列的实现
- 一个jsp引入另一个jsp
- 【浏览器渲染原理】解析和DOM树构建之处理脚本和样式表的顺序
- HTML5画布线教程
- JS 各种效果
- jQuery学习笔记9:高级事件
- [读书笔记]JSP_Servlet学习笔记-JSTL
- Extjs组件的生命周期
- extjs 组件生命周期(转)
- jquery 描点平滑定位
- JS在路径中传中文参数