2012-07-06 78 views
0

我有一个Java可序列化的对象,我想写/从一个文件读取该对象。 然而,谷歌应用程序引擎不支持FileOutputStream中和ObjectOutputStream的,所以我的序列化对象转换为字节数组,并将其写入到文件写入/读取字节数组从/到文件java

$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

请提供错误日志。 – 2012-07-06 08:10:10

回答

0

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