首页 > 解决方案 > 如何继续将新记录附加到文本文件而不替换旧记录(Java)

问题描述

我现在的问题是,当我追加新记录时,它将替换旧记录。

下面是将我从文本框获得的所有输入写入文本文件的代码块:

try{

    PrintWriter p = new PrintWriter("LogFile.txt");
    p.print("USERNAME\tROLE\t\tACTION\t\tLOGON_TIME\n");
    p.print(AcademicSystem.user.getLogin_username() + "\t\t");
    p.print(AcademicSystem.user.getRole()+ "\t");
    p.print("Login" + "\t\t");
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat simpleformat = new SimpleDateFormat("dd/MMMM/yyyy hh:mm:s");
    p.print(simpleformat.format(cal.getTime())+ "\n");
    p.println();
    p.close();
    
}catch(Exception er){
    JOptionPane.showMessageDialog(this,er);
}

这是主要课程:

 Scanner lg = new Scanner(new File("LogFile.txt"));
            while(lg.hasNext()){
                lg.nextLine();

文本文件中的输出:

USERNAME    ROLE        ACTION      LOGON_TIME
a           Lecturer     Login      21/August/2020 03:17:2

因此,如果我希望程序能够继续将新记录附加到文本文件中,我需要做的解决方案是什么?

标签: javaioprintwriter

解决方案


以追加模式打开文件。

通常打开文件会覆盖原始文件中的任何数据。但是,如果您使用文件名和布尔值 true 打开 FileOutputStream,它将在原始数据之后附加新数据。

FileOutputStream file = new FileOutputStream(String filename, boolean append)

要像最初打开一样打开 PrintWriter,请使用以下行:

PrintWriter p = new PrintWriter(new FileOutputStream("Logfile.txt", true));

然后您可以写入文件,新数据将附加到原始文件中。


推荐阅读