I know that writers should be used instead of outputstreams when writing text, but still I don't understand why there are extra characters in the file outputStream.txt
after running this program:
public static void main(String[] args) throws FileNotFoundException, IOException
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("C:\\Data\\tmp\\outputStream.txt")));
oos.writeObject("SomeObject");
oos.writeUTF("SomeUTF");
oos.flush();
oos.close();
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("C:\\Data\\tmp\\outputWriter.txt")));
writer.write("SomeObject");
writer.write("SomeUTF");
writer.flush();
writer.close();
}
The file outputWriter.txt
is 17bytes, as expected, but outputStream.txt
is 28, including some unrecognizable text. Why is that?
ObjectOutputStream
is used to write Java objects to a stream. That means won't write the value of a String into the stream; instead if will write "the next object is a String
and the value for it is SomeObject
".
So if you want a plain text file, you have to use the Writer
API.
Note: Your code is platform dependent. If you want to make it platform independent, then you have to use:
FileOutputStream stream = new FileOutputStream( file );
return new BufferedWriter( new OutputStreamWriter( stream, Charset.forName("UTF-8") ) );