public byte[] toByteArray() {
try {
ByteArrayOutputStream objectStream = dataObject.toByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(objectStream);
dout.writeUTF(recordid);
dout.close();
objectStream.close();
return objectStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
上述代码存在问题。我首先创建了一个objectStream(在另一个类中),然后手动将recordid添加到ByteArrayOutputStream中。但是有没有一种方法可以先添加recordId,然后再将ByteArrayOutputStream附加到其上?我基本上有两个需要连接的ByteArrayoutputStreams(并保持为ByteArrayOutputStream)。
编辑: 我的新版本应该可以工作,但是它没有。当我打印dout的哈希码时,刷新前后相同。就好像它保持为空?这是可能的吗?
public byte[] toByteArray() {
try {
ByteArrayOutputStream realOutputStream = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(realOutputStream);
dout.writeUTF(dataObject.getClass().toString());
dout.writeUTF(recordid);
System.out.println("Recordid: " + recordid + "|" + dout.hashCode());
dout.flush();
System.out.println("Recordid: " + recordid + "|" + dout.hashCode());
ByteArrayOutputStream objectStream = dataObject.toByteArrayOutputStream();
dout.write(objectStream.toByteArray());
dout.close();
objectStream.close();
return objectStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}