protobuf java 使用_protobuf的基本使用(读取和写入)——java

本文主要参考:

protobuf官方文档。

好,下面上货。我们这里说的是如何使用protobuf。首先protobuf提供了一个约定——.proto文件。然后约定好的双方都通过这种格式进行对数据进行处理即可。

下面是使用的一个例子:

1、添加maven依赖

com.google.protobuf

protobuf-java

3.5.1

2、通过.proto文件编译出对应的java类文件(可以参考这里:https://blog.csdn.net/wild46cat/article/details/80739888)。

3、首先是把protobuf格式的类进行编码。

package com.example.demo;

import com.example.demo.proto.AddressBookProtos;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

public class ProtoWrite {

public static Logger logger = LoggerFactory.getLogger("ProtoWrite");

public static void main(String[] args) {

AddressBookProtos.Person cat = AddressBookProtos.Person.newBuilder().setId(1234)

.setName("John Doe")

.setEmail("jdoe@example.com")

.addPhones(

AddressBookProtos.Person.PhoneNumber.newBuilder()

.setNumber("555-4321")

.setType(AddressBookProtos.Person.PhoneType.HOME))

.build();

System.out.println(cat);

System.out.println("-=============-");

try {

System.out.println(cat.toByteArray());

System.out.println("-=============-");

cat.writeTo(System.out);

System.out.println("-=============-");

cat.writeTo(new FileOutputStream("C:\\Users\\admin\\Desktop\\22.txt"));

} catch (IOException e) {

e.printStackTrace();

} finally {

}

}

}

4、然后是读取的过程

package com.example.demo;

import com.example.demo.proto.AddressBookProtos;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

public class ProtoRead {

public static Logger logger = LoggerFactory.getLogger("ProtoRead");

public static void main(String[] args) {

try {

AddressBookProtos.Person person= AddressBookProtos.Person.parseFrom(new FileInputStream("C:\\Users\\admin\\Desktop\\22.txt"));

System.out.println(person);

} catch (IOException e1) {

e1.printStackTrace();

} finally {

}

}

}

5、注意,在java工程中maven的porotobuf的版本需要和protoc的版本保持一致,不然.proto文件工程经过编译后会出现错误。

可以看一下输出的文件中的内容:

John Doe?jdoe@example.com"这文件里面的数据是通过编码后得到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值