DataOutputStream writes the values of variables and objects in a binary format, that you cannot read with a text editor or display in a console window as text. Don't save this data in a *.txt file, because it isn't text.
Ofcourse, if your program reads the file with a DataInputStream, it will be able to interpret the binary data in the file and display it correctly (the DataInputStream doesn't care that the file extension is "txt", even though it does not contain plain text).
Java has two kinds of I/O classes: InputStreams and OutputStreams, and Readers and Writers. The first are for reading and writing binary data. The second are for reading and writing text.
If you want to write data as text, use a Writer. For example a FileWriter.