我试图写一个文件然后再读一遍。
我的写代码:
ObjectOutputStream oos = null;
FileOutputStream fout = null;
try
{
Object myObject;
fout = new FileOutputStream(new File("C:\\Foo","Bar.log"));
oos = new ObjectOutputStream(fout);
oos.writeObject(myObject);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
oos.close();
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我的读者:
FileInputStream input;
try {
input = new FileInputStream(new File("C:\\Foo\\Bar.log"));
MyFile parsedObject = MyFileFormat.MyFile.parseFrom(input);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
但是我在解析器上遇到了这个异常:
com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:94)
有人可以帮忙吗?
答案 0 :(得分:1)
您使用java的ObjectOutputStream
来序列化您的对象,但是使用了一些涉及guava的自定义反序列化?
如果您使用ObjectOutputStream
来撰写内容,则应使用ObjectInputStream进行阅读。此外,你的例子没有任何意义。您永远不会在序列化片段中初始化myObject
变量,此代码将无法编译。