我如何 serialize/deserialize 一个 Proto 对象到 Android 项目中的本地存储?
How can I serialize/deserialize a Proto object to a local storage in Android project?
如何将 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
class 包含以下两种方法:
void writeTo(final OutputStream output)
static GameResponse.GameHistory parseFrom(InputStream input)
因此,您将能够使用这两种方法来 write/read 协议消息 to/from 文件。
// 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();
如何将 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
class 包含以下两种方法:
void writeTo(final OutputStream output)
static GameResponse.GameHistory parseFrom(InputStream input)
因此,您将能够使用这两种方法来 write/read 协议消息 to/from 文件。
// 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();