所以我使用这个函数写入文本文件,但文本文件在执行后总是空的。任何人都可以看到错误可能是什么?我已经坚持了一段时间。
public static void writeTextFile(String fileName, String s) {
FileWriter output = null;
try {
output = new FileWriter(fileName);
BufferedWriter writer = new BufferedWriter(output);
writer.write(s);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
// Ignore issues during closing
}
}
}
}
答案 0 :(得分:1)
写完输出后,你应该确保flush并关闭套接字,特别是因为你使用的是缓冲输出。
writer.write(s);
writer.flush();
writer.close();
如果不这样做,BufferedWriter将等待其他数据,但确实没有,并且程序执行突然停止。 在这里使用flush是可选的,因为当关闭它时,flush是隐式的,但我个人每次都需要确保它出来时就调用它。就像上厕所一样;)
答案 1 :(得分:1)
只需将您更改为包含writer.close();
,如下所示
try {
output = new FileWriter(fileName);
BufferedWriter writer = new BufferedWriter(output);
writer.write(s);
writer.close();
}
//remaining code
您的数据未保存在文件中的原因是,仅当您致电writer.flush();
时才会保存数据并且调用writer.flush()
方法足以保存数据。但是你需要像writer.close();
那样关闭BufferedWriter()以避免资源泄漏。在关闭流之前,close()
为您调用flush()
方法。
答案 2 :(得分:0)
使用缓冲区写东西时,必须在结束时关闭它
writer.close();
答案 3 :(得分:0)
如果没有关闭缓冲区,您就无法在文本文件中看到输出 尝试添加此代码
writer.close()