Question

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;
    }
}

Il y a un problème avec le code ci-dessus. Je crée d'abord un objectStream (dans une autre classe). Et puis-je ajouter manuellement RECORDID au ByteArrayOutputStream. Mais est-il un moyen d'ajouter d'abord RECORDID et puis ajoutez le ByteArrayOutputStream à elle? Fondamentalement, j'ai 2 ByteArrayoutputStreams qui doivent être concaténés (et reste un ByteArrayOutputStream).

modifier: Ma nouvelle version devrait fonctionner, mais il ne fonctionne pas. Quand j'imprimer le hashcode de dout, il est le même avant et après la chasse d'eau. Il est comme il reste vide? Est-ce possible?

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;
        }
    } 
Était-ce utile?

La solution

essayez ce qui suit pour placer RECORDID premier.

ByteArrayOutputStream objectStream = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(objectStream);
dout.writeUTF(recordid);    
dout.write(dataObject.toByteArrayOutputStream().toByteArray());
scroll top