好吧,我正在尝试编写一行信息来登录文本文件(.txt),但这是代码无法编写的部分。其他所有工作,除此之外,但没有任何错误。
public void writeConfig(File config, Boolean append, String errored){
try {
Writer output;
if (config != null){
output = new BufferedWriter(new FileWriter(config));
} else {
output = new BufferedWriter(new FileWriter(er));
}
if (append == true){
output.append(errored);
} else {
output.write(errored);
}
} catch (Exception e){
try {
loadErrorLog(error, true, "Failed to write to Boom's Log.\n");
} catch (Exception e1){
log.info("Major Malfunction #686 : Tell Maker immediatly.");
}
}
}
答案 0 :(得分:4)
您没有关闭编写器,这意味着所有数据都只是停留在缓冲区中。
您应该在finally
块中关闭它。
此外:
append
参数的使用显然是狡猾的 - 您几乎肯定会将其传递给FileWriter
(或FileOutputStream
)的构造函数。我认为append
中的Writer
不符合您的想法。true
进行比较 - 只有if (append)
会更清楚使用条件运算符可以使您的FileWriter
代码更清晰,尤其是当您使用 作为文件时:
File file = config == null ? er : config;
Writer writer = new BufferedWriter(new FileWriter(file));
FileWriter
,因为它总是使用平台默认编码。使用FileOutputStream
包裹的OutputStreamWriter
,明确指定编码(例如UTF-8)Exception
;只要抓住IOException
就可以了。loadErrorLog
方法可能会记录失败,否则我怀疑你会在每次的时候写出代码块。catch
块(只留下try
/ finally
)并让IOException
冒泡到堆栈