我在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个字节。任何人都知道如何写一个唯一的字节?还有其他更好的方法吗?
答案 0 :(得分:3)
请勿使用ObjectOutputStream
。直接使用FileOutputStream
:
FileOutputStream out=new FileOutputStream("SaveObj3.sav");
out.write(0);
out.close();
答案 1 :(得分:3)
正如JB Nizet注意到ObjectOutputStream constructor的文档说明这个对象也是
将序列化流标头写入基础流
解释了额外的字节。
要防止出现此问题,您可以使用其他流,例如FileOutputStream
或DataOutputStream
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