从/向文件java写入/读取字节数组

时间:2012-07-06 06:41:01

标签: google-app-engine

我有一个java可序列化对象,我想在文件中写入/读取该对象。 然而谷歌应用程序引擎不支持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

谢谢

1 个答案:

答案 0 :(得分:0)

考虑将protobuf用于此目的。除了它比标准java序列化更紧凑的格式之外,它还使您能够更改(通过添加新字段)类以写入文件。