1

我一直在用 Java 做一个小项目。该程序从不同的方法写入日志文件。但是每次使用方法时,文件的内容都会被删除,其中写入的所有内容都是最后一个方法的结果。这是程序的代码片段:

// dir , log_file , exp_date and amount are declared in the code removed 
public static void WriteHeader() throws IOException
{
    FileWriter fileWriter = new FileWriter(dir+"/"+log_file);
    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
    Console console = System.console();
    exp_date = console.readLine("Enter a string here: ");
    bufferedWriter.write(exp_date);
    bufferedWriter.close();
}
public static void WriteNewLine() throws IOException
{
    FileWriter fileWriter = new FileWriter(dir+"/"+log_file);
    BufferedWriter bufferedWriter2 = new BufferedWriter(fileWriter);
    Console console = System.console();
    amount = console.readLine("Enter another string here :");
    bufferedWriter2.newLine();
    bufferedWriter2.write(amount);
    bufferedWriter2.close();

}
4

3 回答 3

1

您需要以附加模式创建编写器http://docs.oracle.com/javase/6/docs/api/java/io/FileWriter.html#FileWriter(java.io.File , boolean)

于 2013-09-13T00:19:47.057 回答
0

您需要以append模式打开文件,否则一旦关闭文件并重新打开它进行写入,它将删除以前的数据。http://docs.oracle.com/javase/6/docs/api/java/io/FileWriter.html#FileWriter(java.lang.String , boolean)

    FileWriter fileWriter = new FileWriter(dir+"/"+log_file, true);
于 2013-09-13T00:19:38.640 回答
0
FileWriter fw = new FileWriter(file, true);

我很确定 FileWriter 有一个重载的构造函数,用于附加到文件而不是覆盖文件

我还会先检查文件是否存在。

file.exists();
于 2013-09-13T00:20:06.513 回答