我正在用Java编写应用程序(新开发人员),我正在尝试在日志文件(logs / [date] .txt)中保存消息和类似的东西。我得到的问题是它每次都被覆盖,而不是将值附加到我的文件中。
这是我的代码:
public void onMessage(String channel, String nick, String account, String hostname, String message) {
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss dd/MM/yyyy");
SimpleDateFormat sdfd = new SimpleDateFormat("dd/MM/yyyy");
Date now = new Date();
try {
/* Check if the logs folder exists */
File logdir = new File("logs/");
boolean result = true;
if (!logdir.exists()) {
try {
logdir.mkdir();
}catch(Exception e){
System.err.println("[ERROR] Could not make directory 'logs/'");
result = false;
}
}
/* Check if the log file exists */
File fcheck = new File("logs/" + sdfd.format(now).replace("/", "-") + ".txt");
if (!fcheck.exists()) {
try {
fcheck.createNewFile();
}catch (Exception e){
System.err.println("[ERROR] Could not make log file 'logs/" + sdfd.format(now).replace("/", "-") + ".txt'");
}
}
/* Write to file */
if (result) {
FileWriter file = new FileWriter("logs/" + sdfd.format(now).replace("/", "-") + ".txt");
PrintWriter write = new PrintWriter(file);
String entry = "[" + sdf.format(now) + "] [" + channel + "] " + nick + " (" + account + ") > " + message + "\n";
write.append(entry);
write.close();
file.close();
}else{
System.err.println("[ERROR] Could not save line to log file.");
}
}catch (Exception e){
System.err.println("[ERROR] Could not save line to log file.");
}
}
很抱歉,如果这不是很清楚,但我还在学习Java。
正如您所看到的,我有write.append(entry);
- 我认为它会在我的日志文件中附加\ n,因此允许我保存并保存并保留所有条目。
答案 0 :(得分:0)
创建File类型的对象时,添加第二个参数true,并附加文件
FileWriter fcheck = new FileWriter("logs/" + sdfd.format(now).replace("/", "-") + ".txt",true);
答案 1 :(得分:0)
将FileWriter的append
参数设置为true
:
FileWriter file = new FileWriter("logs/" + sdfd.format(now).replace("/", "-") + ".txt", true);
答案 2 :(得分:0)
您正在关闭每个条目的PrintWriter
- 每次调用该方法时都会创建一个新实例,并且文件被覆盖。
如果您不想更改此设置,可以使用FileWriter(String, boolean)
将FileWriter
设置为附加模式。
FileWriter file = new FileWriter("logs/" + sdfd.format(now).replace("/", "-") + ".txt", true);
PrintWriter write = new PrintWriter(file);