File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes FileWriter. From the API. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "FileWriter. From the API." Watch "FileWriter. From the API." New topic

FileWriter. From the API.

Tim McMurry

Joined: Oct 31, 2009
Posts: 22

can someone help me understand or point me to resources I could read in order to understand the following line from the API description of the class Filewriter ?

"The constructors of this class assume that the default character encoding and the default byte-buffer size are acceptable."
Rob Spoor

Joined: Oct 27, 2005
Posts: 20274

Character encoding. In short, it describes how bytes are converted into characters. The default character encoding is determined by your operating system, and it may not be the actual encoding of the file. If it isn't then FileWriter is not a good option.

How To Ask Questions How To Answer Questions
Ulf Dittmer

Joined: Mar 22, 2005
Posts: 42965
On a more general level, it means that the FileWriter class abstracts away those two parameters (character encoding and buffer size) - it uses default values that your code can't change. Should you do need to change them, then using an OutputStreamWriter (for the encoding) and a BufferedWriter (for the buffer size) in conjunction with a FileOutputStream are called for. The javadocs of those other classes provide more information about what exactly they do.
Tim McMurry

Joined: Oct 31, 2009
Posts: 22
Thank you for the answers.

I thought I had figured things out after getting your warning about FileWriter and reading the docs, but I am apparently still missing something.

I have a text-file which was likely created on a Windows machine. According to the "file" tool on my linux machine, its encoding is "ISO-8859".

I extract certain strings from this file and write those to a new file. I have done the following, where inFile is the File object for the input file,
and outFile is the File object for the output file.

I write to osw using

Now when I open outFile in a texteditor a questionmark appears for instance where there ought to be a character with an accent egu and checking the type of
outFile with "file" again, shows that it is ASCII despite having chosen "ISO-8859-1" in the OutputStreamWriter constructor .

Hints ?
Tim McMurry

Joined: Oct 31, 2009
Posts: 22
Apologies for posing my last question. Hope you havent wasted too much time thinking about it.

This was for a term-project and we were giving code to load some data. On linux machines some bugs occured. This was caused by the provided code using FileWriter. The above code does fix this. I had overseen that the writer was reassigned after initialization apparently for the sole silly purpose of skipping the first line in the file !
I agree. Here's the link:
subject: FileWriter. From the API.
It's not a secret anymore!