0

Java シリアライズ可能なオブジェクトがあり、そのオブジェクトをファイルに読み書きしたい。ただし、Google アプリ エンジンは fileoutputstream と objectoutputstream をサポートしていないため、シリアル化可能なオブジェクトをバイト配列に変換してファイルに書き込みます。

$FileWriteChannel writeChannel = fileService.openWriteChannel(
writableFile, lockForWrite);
$writeChannel.write(ByteBuffer.wrap(bytearray));
$writeChannel.closeFinally();

次に、ファイルを読み取ります。

AppEngineFile readableFile = new AppEngineFile(filename);
FileReadChannel readChannel = fileService.openReadChannel(readableFile, lockForRead);
BufferedReader reader = new BufferedReader(Channels.newReader(readChannel, "UTF-8"));
String line = reader.toString();

ログを見ると UTF-8 のエラーが表示されました
エラーログ:

cloud.spam.filter.server.SerializationObject file_io: An error message: invalid stream header: 5B4240312012/07/06 08:00:10

ありがとうございました

4

1 に答える 1

0

この目的で protobuf を使用することを検討してください。標準の Java シリアル化よりもコンパクトな形式であるという事実に加えて、(新しいフィールドを追加することによって) クラスをファイルに書き込むように変更することもできます。

于 2012-07-07T16:09:58.050 に答える