我正在尝试将一个大字符串(单行)打印到一个文件中。但是字符串在两者之间被截断了。知道为什么会这样吗?
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();
}
}
最佳答案
您应该记得关闭文件。
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 和更新版本使用 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();
}
写入任何 Writer
都可以被缓冲,如果您不关闭它,就会留下一些未写入的数据。
关于java - 无法将大字符串写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37028484/