如何在文件中保存Proto数据?如果我的原型数据是这样的,我可以把它保存在一个文件中吗?或者我需要在我的原型文件中做一些更改吗?
message GameHistory {
repeated Game game = 1;
}
message Game {
string title = 1;
oneof entity {
Easy easy = 2;
Hard hard = 3;
}
}
message Easy {
}
message Hard {
Bool isPaid =1;
int32 number_of_levels = 2;
}
以下是我的Java代码游戏列表:
GameResponse.Game game1 = GameResponse.Game.newBuilder().setTitle("Asd").setEasy(GameResponse.Easy.getDefaultInstance()).build();
GameResponse.Game game2 = GameResponse.Game.newBuilder().setTitle("Bsd").setHard(GameResponse.Hard.getDefaultInstance()).build();
final GameResponse.GameHistory build = GameResponse.GameHistory.newBuilder().addGame(game1).addGame(game2).build();
使用com.google.protobuf
,GameResponse.GameHistory
类包含以下两种方法:
void writeTo(final OutputStream output)
static GameResponse.GameHistory parseFrom(InputStream input)
因此,您将能够使用这两种方法在文件中写入/读取协议消息。
// to write:
File file = new File(context.getExternalFilesDir(null), "fileName.bin");
OutputStream fos = FileOutputStream(file);
gameHistory.writeTo(fos);
fos.flush();
fos.close();
// to read:
File file = new File(context.getExternalFilesDir(null), "fileName.bin");
InputStream fis = FileInputStream(file);
GameResponse.GameHistory gameHistory = GameResponse.GameHistory.parseFrom(fis);
fis.close();