MathManiac, you are incorrect. What I said was slightly inaccurate, but not in the way you describe, and only if you take it out of context. To be completely accurate, the new File(...) expression doesn't actually open a file at all. Opening the file only happens when you try to create an input or output stream/reader on the file; and, if you create a FileReader as in your own example, the file must exist. It is not true that an empty file is created in that case.