3

我在 Java 中对二进制文件进行文件比较。问题是下一个,如何在一个总大小只占用 1 个字节的新文件中写入一个字节?我正在做下一个:

FileOutputStream saveFile=new FileOutputStream("SaveObj3.sav");
        // Create an ObjectOutputStream to put objects into save file.
        ObjectOutputStream save = new ObjectOutputStream(saveFile);

        save.writeByte(0);


        save.close();
        saveFile.close();

也就是说,只需要在文件中写入一个字节,但是当我查看大小时,它占用了 7 个字节。任何人都知道我怎样才能写一个唯一的字节?还有其他更好的方法吗?

4

3 回答 3

3

正如 JB Nizet 注意到ObjectOutputStream 构造函数的文档指出该对象还

将序列化流标头写入底层流

这解释了额外的字节。

为了防止这种行为,您可以使用其他流,FileOutputStream例如DataOutputStream

FileOutputStream saveFile = new FileOutputStream("c:/SaveObj3.sav");
DataOutputStream save = new DataOutputStream(saveFile);

save.writeByte(0);

save.close();
于 2013-06-01T14:54:55.610 回答
3

不要使用ObjectOutputStream. 直接使用FileOutputStream

FileOutputStream out=new FileOutputStream("SaveObj3.sav");
out.write(0);
out.close();
于 2013-06-01T14:36:30.797 回答
1

您可以使用 Java 7 提供的 Files 类。它比预期的要容易。

它可以在一行中执行:

byte[] bytes = new String("message output to be written in file").getBytes();
Files.write(Paths.get("outputpath.txt"), bytes);

如果你有一个 File 类,你可以替换:

Paths.get("outputpath.txt")

至:

yourOutputFile.toPath()

要根据需要只写入一个字节,可以执行以下操作:

Files.write(Paths.get("outputpath.txt"), new byte[1]);

in file properties:
size: 1 bytes
于 2014-06-01T02:45:19.457 回答