Ich habe ein BitSet und möchte es in eine Datei schreiben- Ich stieß auf eine Lösung, um einen ObjectOutputStream mit der Methode writeObject zu verwenden.Schreiben eines BitSet in eine Datei in Java
schaute ich auf der Object in dem Java-API und sah, dass Sie andere Dinge schreiben können (Byte, int, kurz etc.)
Ich habe versucht, die Klasse zu überprüfen, so dass ich versuchte, einen Byte in eine Datei zu schreiben mit dem folgenden Code, aber das Ergebnis gibt mir eine Datei mit 7 Bytes anstelle von 1 Byte
meine Frage ist, was sind die ersten 6 Bytes in der Datei? Warum sind die hier?
meine Frage ist relevant für ein BitSet, weil ich nicht beginnen möchte, viele Daten in eine Datei zu schreiben und erkennen, dass ich zufällige Bytes in die Datei eingefügt habe, ohne zu wissen, was sie sind.
hier ist der Code:
byte[] bt = new byte[]{'A'};
File outFile = new File("testOut.txt");
FileOutputStream fos = new FileOutputStream(outFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.write(bt);
oos.close();
Dank für jede Hilfe
Avner
Also wenn ich dich richtig verstehe - jedes Mal, wenn ich etwas mit ObjectOutputStream schreibe, bekomme ich einen ernsthaften Overhead für jeden Schreibvorgang. zum Beispiel, wenn ich ein int, ein kurzes, ein Byte und dann eine Zeichenfolge schreiben Ich bekomme 4 Sätze von zusätzlichen Daten für jedes Element, das ich schreibe? – Avner
Nein. Nur die Methode writeObject() fügt den Typheader hinzu. Die Methode writeUTF() fügt ein 2 Byte langes Präfix hinzu. Die primitiven writeXX() - Methoden fügen keinen Overhead hinzu. Lesen Sie das API-Dokument für Details. –
Beachten Sie auch, dass die Typinformationen per-Objekt sind. Bei einem Objekt, das im Wesentlichen aus einem primitiven Array besteht (z. B. BitSet), ist der Overhead konstant, unabhängig davon, wie groß das Array ist. –