Search code examples
javastringbinaryioexceptionfileoutputstream

Writing Strings to a binary file java


I have a list of objects that has some simple String properties. I want to be able to save those strings to binary so that when you open the file outside the program, you only see 1's and 0's.

I have managed to use FileOutputStreamand saved the strings, however, I can't manage to get it to write to binary. The file reads as clean readable text. I have tried getBytes().

What would be the best approach for this? Keep in mind that I want to be able to read the file later and construct back the objects. Would it be better to use Serializable and save a list of objects?

Here is my FileWriter:

NB: The toString() is custom and returns a String with linebreaks for every property.

public class FileWriter {

    public void write(String fileName, Savable objectToSave ) throws IOException {

        File fileToSave = new File(fileName);

        String stringToSave = objectToSave.toString();

        byte[] bytesToSave = stringToSave.getBytes(StandardCharsets.UTF_8) ;

        try (
                OutputStream outputStream = new FileOutputStream(fileToSave);
                ) {

            outputStream.write(bytesToSave);

        } catch (IOException e) {
            throw new IOException("error");
        }
    }

}

Solution

  • If your goal is simply serializing, implementing Serializable and writing them would work, but your string is still going to be readable. You can encrypt the stream, but anyone decompiling your code can still devise a way to read the values.