简体   繁体   中英

Java write byte in file

I am doing in Java a File Comprimir to a Binary File. The problem is the next, how can I write a Byte in a new File that the total size only occups 1 byte? I am doing the next:

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();

That, only must to write a only byte in the file, but when I look the size,it occups 7 bytes. Anyone knows how can I write a only byte? Is there another way better?

Don't use ObjectOutputStream . Use the FileOutputStream directly:

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

As JB Nizet noticed documentation of ObjectOutputStream constructor states that this object also

writes the serialization stream header to the underlying stream

which explains additional bytes.

To prevent this behaviour you can just use other streams like FileOutputStream or maybe DataOutputStream

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

save.writeByte(0);

save.close();

You can use Files class provided by Java 7. It's more easy than expected.

It can be performed in one line:

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

If you have a File class, you can just replace:

Paths.get("outputpath.txt")

to:

yourOutputFile.toPath()

To write only one byte, as you want, you can do the following:

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

in file properties:
size: 1 bytes

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM