7

I am trying to print a large string(single line) into a file. But the string is getting truncated in between. Any idea on why this is happening?

void writeToFile(String schemaString,String message){ try{ FileWriter fw = new FileWriter("D:\\Servicelog.txt", true); java.util.Date date= new java.util.Date(); fw.write(new Timestamp(date.getTime())+"\n"); fw.write(message+"\n"); fw.write("schemaBegins\n"+schemaString+"\n"+"schemaEnds"); }catch(Exception e){ e.printStackTrace(); } } 

1 Answer 1

12

You should remember to close the file.

FileWriter fw = null; try { fw = new FileWriter("D:\\Servicelog.txt", true); java.util.Date date = new java.util.Date(); fw.write(new Timestamp(date.getTime()) + "\n"); fw.write(message + "\n"); fw.write("schemaBegins\n" + schemaString + "\n" + "schemaEnds"); } catch (Exception e) { e.printStackTrace(); } finally { if ( fw != null ) { fw.close(); } } 

Java7 and newer encapsulate that mechanism using try-with-resources:

try (FileWriter fw = new FileWriter("D:\\Servicelog.txt", true) ) { java.util.Date date = new java.util.Date(); fw.write(new Timestamp(date.getTime()) + "\n"); fw.write(message + "\n"); fw.write("schemaBegins\n" + schemaString + "\n" + "schemaEnds"); } catch (Exception e) { e.printStackTrace(); } 

Writing to any Writer can be buffered, leaving some of the data unwritten if you do not close it.

Sign up to request clarification or add additional context in comments.

2 Comments

Calling fw.flush() will also flush the stream, if you don't want to close FileWriter right away for some reason.
I dont know how I missed it out. Thanks a lot for pointing it out to me. I was wasting my time analysing FileWrite, PrintWriter etc...

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.