Java可序列化对象到字节数组到文件在文件的开头有垃圾

时间:2015-09-28 18:23:59

标签: java serialization bytearray

我可以通过以下方式将可序列化的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 这是"按照设计的功能"。

有没有办法避免这种情况?

谢谢你, 伯特

1 个答案:

答案 0 :(得分:-1)

尝试覆盖writeStreamHeader()

ObjectOutputStream

喜欢

 public class MyObjectOutputStream extends ObjectOutputStream {
      public MyObjectOutputStream (OutputStream out) throws IOException {
         super(out);
      }
      @Override
      protected void writeStreamHeader() throws IOException {

      }
 }