我有一个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
谢谢
答案 0 :(得分:0)
考虑将protobuf用于此目的。除了它比标准java序列化更紧凑的格式之外,它还使您能够更改(通过添加新字段)类以写入文件。