Java在文件中写入字节

时间:2013-06-01 14:26:54

标签: java

我在Java中使用二进制文件的文件Comprimir。问题是下一步,如何在新文件中写一个字节,总大小只占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个字节。任何人都知道如何写一个唯一的字节?还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:3)

请勿使用ObjectOutputStream。直接使用FileOutputStream

FileOutputStream out=new FileOutputStream("SaveObj3.sav");
out.write(0);
out.close();

答案 1 :(得分:3)

正如JB Nizet注意到ObjectOutputStream constructor的文档说明这个对象也是

  

将序列化流标头写入基础流

解释了额外的字节。

要防止出现此问题,您可以使用其他流,例如FileOutputStreamDataOutputStream

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

save.writeByte(0);

save.close();

答案 2 :(得分: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