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を追加する方法はありますか?基本的に、連結する必要がある(そして、ByteArrayOutputStreamのままである)2つの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;
}
}