Java,如何编写或添加而不是覆盖文本文件?

我想知道为什么我的程序会覆盖文本文件中的现有文本而不是添加新的文本行?


public class WriteToFile {


    public void registerTrainingSession(Customer customer) {


        Path outFilePath = Paths.get("C:\\Users\\Allan\\Documents\\Nackademin\\OOP\\Inlämningsuppgift2\\visits.txt");



        try (BufferedWriter save = Files.newBufferedWriter(outFilePath)) {


            String trainingSession = String.format("Member: %s %s\nPersonalnumber: %s\nTraining session date: %s\n", customer.getFirstName(),

                    customer.getLastName(), customer.getPersonalNumber(), LocalDate.now());



            save.write(trainingSession);

            save.flush();


        }

        catch (NullPointerException e) {

            JOptionPane.showMessageDialog(null, "Customer info is missing!");

        }

        catch (IOException e) {

            JOptionPane.showMessageDialog(null, "File could not be created.");

        }

    }

}


陪伴而非守候
浏览 69回答 1
1回答

莫回无

该代码会覆盖该文件,因为您没有OpenOption在newBufferedWriter()调用时指定 an 。正如javadoc所说:如果不存在任何选项,则此方法的工作方式就像存在CREATE、TRUNCATE_EXISTING和WRITE选项一样。换句话说,它打开文件进行写入,如果文件不存在则创建文件,或者如果存在则最初将现有文件截断regular-file为大小。0尝试: Files.newBufferedWriter(outFilePath, StandardOpenOption.CREATE,                                       StandardOpenOption.APPEND,                                       StandardOpenOption.WRITE)或者,如果文件必须已经存在,如果不存在则失败: Files.newBufferedWriter(outFilePath, StandardOpenOption.APPEND,                                       StandardOpenOption.WRITE)写入新文件,如果文件已存在则失败 Files.newBufferedWriter(outFilePath, StandardOpenOption.CREATE_NEW,                                       StandardOpenOption.WRITE)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java