您的位置:首页 > 其它

谷歌pb协议

2014-08-15 12:47 148 查看
1、proto文件

package com.test.pro.MavenProject;//命名空间

option java_package = "com.test.pro.MavenProject";//生成文件的包名

option java_outer_classname = "AddressBookProtos";//类名

message Person { //要描述的结构化数据

required string name = 1;//required表示这个字段不能为空

required int32 id = 2;//等号后面的内容为数字别名

optional string email = 3;//optional表示可以为空

}

message AddressBook {

repeated Person person = 1;//是个集合

}

2、jar文件

3、编译命令

F:\>protoc --java_out=F:\ my.proto

其中protoc.exe在F盘。proto文件也在F盘。编译成功后,把生成的.java文件拷贝到工程目录中

4、java代码

package com.test.pro.MavenProject;

import com.test.pro.MavenProject.AddressBookProtos.Person;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

Person.Builder chinese=Person.newBuilder();

chinese.setName("jianghuiwen");

chinese.setId(1);

chinese.setEmail("15255123122@163.com");

Person myperson=chinese.build();

}

}

4、序列化对象

package com.test.pro.MavenProject;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import com.test.pro.MavenProject.AddressBookProtos.Person;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args ) throws Exception

{

Person.Builder chinese=Person.newBuilder();

chinese.setName("jianghuiwen");

chinese.setId(1);

chinese.setEmail("15255123122@163.com");

Person myperson=chinese.build();

//写入序列化

FileOutputStream fos = new FileOutputStream("person.out");

myperson.writeTo(fos);

fos.close();

//读出对象

FileInputStream fin=new FileInputStream("person.out");

Person newP=Person.parseFrom(fin);

System.out.println(newP.getName());

}

}

上述代码就是将我们生成的pb对象写入到流中,同时从流中获取对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: