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对象写入到流中,同时从流中获取对象。