我可以通过以下方式将可序列化的Java对象保存到文件中:
Object mySerializableObj;
// assign value to mySerializableObj
try
{
writer = new BufferedWriter(new FileWriter(strFile1ToWritePath));
writer.write(part.toString());
return error;
}
catch (Exception ex)
{}
但是我需要将该对象作为字节数组发送。但是当我尝试做的时候:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try
{
out = new ObjectOutputStream(bos);
out.writeObject(mySerializableObj);
byte[] objBytes = bos.toByteArray();
FileOutputStream fos2 = new FileOutputStream(strFile2ToWritePath);
fos2.write(objBytes);
fos2.close();
}
catch (Exception ex){}
如果我比较两个结果文件,我会得到一些二进制垃圾。否则他们是一样的。
预先设定的二进制是AC ED 00 05 7C 00 00 00 00 00 13 34 FB 我可以从JavaWorld文章中看到" Java序列化算法显示"在http://www.javaworld.com/article/2072752/the-java-serialization-algorithm-revealed.html 这是"按照设计的功能"。
有没有办法避免这种情况?
谢谢你, 伯特
答案 0 :(得分:-1)
尝试覆盖writeStreamHeader()
ObjectOutputStream
喜欢
public class MyObjectOutputStream extends ObjectOutputStream {
public MyObjectOutputStream (OutputStream out) throws IOException {
super(out);
}
@Override
protected void writeStreamHeader() throws IOException {
}
}