将BitSet写入java中的文件

Avn*_*ner 7 java objectoutputstream bitset

我有一个BitSet并希望将其写入文件 - 我遇到了使用writeObject方法使用ObjectOutputStream的解决方案.

我查看了java API中的ObjectOutputStream,看到你可以编写其他东西(byte,int,short等)

我试着检查一下这个类,所以我尝试使用以下代码将一个字节写入文件,但结果给了我一个7字节而不是1字节的文件

我的问题是文件中的前6个字节是什么?他们为什么在那里?

我的问题与BitSet有关,因为我不想开始将大量数据写入文件,并意识到我在文件中插入了随机字节而不知道它们是什么.

这是代码:

    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();
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

阿夫纳

cle*_*tus 3

其他字节将是类型信息。

基本上,ObjectOutputStream 是一个用于将可序列化对象写入某个目的地(通常是文件)的类。如果你考虑一下 InputObjectStream 就更有意义了。它有一个 readObject() 方法。Java 如何知道要实例化什么对象?简单:里面有类型信息。

  • 不会。只有 writeObject() 方法会添加类型标头。writeUTF() 方法添加一个 2 字节长度的前缀。原始 writeXX() 方法不会增加任何开销。阅读 API 文档了解详细信息。 (3认同)
  • 另请注意,类型信息是每个对象的。对于基本上由原始数组(例如 BitSet)组成的对象,无论数组有多大,开销都是恒定的。 (2认同)