Writing out as a binary file prevents you from manually having to figure out how to de-serialize the data into a useable object (i.e. re-create that object from the data). Java has a default serialization method that allows you to just open an object stream and then write out the file, instead of specifying "I want value A written first, then value B is written in this format,..." etc. etc.
Objects stored in binary are also smaller (in general) than the text representation of that object.
Say you have the double value 1.23456789012345e-126
To write that value out as a string, it would take 21 bytes (depending on the encoding), where as a normal double takes only 10 bytes of memory. That's more than twice the amount of data you need to process. For this simple example, it may not matter but I have worked on data that has millions of numbers (a lot of data sets even go into the billions, trillions, or higher), and for these data sets having twice the data to process is simply unacceptable. Also, it is extremely quick to serialize/deserialize a binary object compared to parsing a string representing the object.
And sometimes you just don't want humans to be able to open up and mess around with the files you're saving out