私はBitSetを持っていて、それをファイルに書きたい - 私は、writeObjectメソッドを使ってObjectOutputStreamを使う解決策を見つけました。JavaのファイルにBitSetを書き込む
私はので、私は、ファイルにバイトを書き込みしようとしたのJava APIでObjectOutputStreamのを見て、あなたは私がクラスをチェックアウトしようとした他のもの(バイト、int型、ショートなど)
を書くことができることを見ました次のコードを使用して結果が1バイトの代わりに7バイトのファイルを返します
私の質問はファイルの最初の6バイトは何ですか?なぜ彼らはそこにいますか?
私の質問は、私がファイルにたくさんのデータを書き始めたくないということと、自分が何であるか知らずにファイルにランダムなバイトが挿入されていることを認識しているからです。任意の助け
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();
おかげ
Avner
私はあなたを正しく理解していれば、ObjectOutputStreamを使って何かを書くたびに、すべての書き込みに重大なオーバーヘッドが発生します。 例えば、int、short、byte、そして文字列を書くと、 は 私は書き込むアイテムごとに4セットの余分なデータを得ますか? – Avner
いいえ、writeObject()メソッドのみが型ヘッダーを追加します。 writeUTF()メソッドは、2バイトのプレフィックス接頭辞を追加します。プリミティブなwriteXX()メソッドはオーバーヘッドを追加しません。詳細については、APIドキュメントをお読みください。 –
また、タイプ情報はオブジェクト単位であることに注意してください。基本的にプリミティブ配列(BitSetなど)で構成されるオブジェクトの場合、配列の大きさにかかわらずオーバーヘッドは一定です。 –