Sie einen Byte-Puffer mit der Größe zugewiesen haben von bytes
, aber das bedeutet nicht, der Byte-Puffer mit dem Byte-Array zugeordnet ist. Sie können ein Byte-Array mit ByteBuffer.wrap
umbrechen.
Hier ist eine minimale Änderung an Ihren Code, die tut die t
in die Datei schreiben:
byte[] bytes = new byte[10];
ByteBuffer bbuf = ByteBuffer.wrap(bytes);
CharBuffer cbuf = bbuf.asCharBuffer();
cbuf.put("t");
FileOutputStream test = new FileOutputStream("somebytes");
test.write(bytes);
test.close();
Beachten Sie, dass für echten Code, den Sie immer geschlossen ist ein try/finally sicherstellen, blockieren, um die Datei verwenden sollten unabhängig von Ausnahmen.
Dies ist jedoch ein langer Weg von der Serialisierung. Java hat seine eigene binäre Serialisierung - siehe ObjectOutputStream
und ObjectInputStream
. Persönlich vermeide ich diese Art der Serialisierung jedoch, da sie angesichts von Klassenänderungen sehr brüchig sein kann. Es gibt verschiedene andere Ansätze zur Serialisierung, z. B. die Verwendung von Thrift- oder Protokoll-Puffern für die Binärserialisierung oder das Serialisieren in XML, JSON oder ein anderes von Menschen lesbares Format.
Sie haben ein Byte für 't', gefolgt von 9 Null '\ 0' Bytes. Nicht sicher, dass das beabsichtigt war. –
@Peter: Ich habe nur versucht, den ursprünglichen Code zu bekommen * einige Daten * auf die Festplatte zu schreiben. Da das letztendliche Ziel eine vollständigere Serialisierung war, habe ich das im letzten Teil der Antwort diskutiert. –