When APIs don't work as you expect, always look them up in the JavaDocs as your first line of defense.
public void write(int c) throws IOException
Write a single character.
[And from Writer.write(int):
The character to be written is contained in the 16 low-order bits of the given integer value; the 16 high-order bits are ignored.
So it's treating the lower 16 bits of yuor random integer as a Unicode character and writing that. It may be that it can tell the character is invalid; who knows?
The main description for BufferedWriter has a good suggestion: wrap it in a PrintWriter:Now you can use println(int) to write each integer on a line. This writes them as text rather than the bytes as they are stored in memory. If you want to write them as raw bytes (non-human-readable) then use a DataOutputStream wrapped around a FileOutputSteram (BufferedOutputStream inbetween to mirror what you have).
The JavaDocs are your friend. Get to know them well.
We begin by testing your absorbancy by exposing you to this tiny ad: