将对象保存到文本文件时出现问题。

这是我的一段代码

if(action.equals("Save Person List"))
    {
        f1 = new File("PersonList.txt");
        if(f1.exists())
        {
            f1.delete();
            f1 = new File("PersonList.txt");
        }

        try {
            fWriter = new FileWriter(f1, true);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        pWriter = new PrintWriter(fWriter, true);

        for(Person p: pList)
        {
            pWriter.println(p.getFName());
            pWriter.println(p.getLName());
            pWriter.println(p.getPNo());
            pWriter.println(p.getSalary());
        }
        JOptionPane.showMessageDialog(null, "Person List Stored in File 'PersonList.txt'");
    }


在上面的代码中,单击按钮后,程序能够将对象的数组列表保存到文件中(对此我很高兴),但是假设我向该数组列表中添加了更多对象,并且我想将它们保存到一个文件,它将保存新数据,但在此过程中,它将复制文本文件中已保存的数据。

我希望程序能够覆盖文本文件中的数据并写入传入的新数据。我尝试删除文本文件(如果存在),但是无法正常工作。它显示在代码行中。我有什么办法可以解决这个障碍?

所有帮助将不胜感激!

最佳答案

发生这种情况的原因是,尽管要删除文件(如果已存在),但删除可能会失败:您应检查delete()返回的值。再次创建File对象也是完全没有用的,顺便说一句。

第三次失败的原因可能是因为您从未关闭写入器,因此无法将其删除。完成操作后,应使用try-with-resources construct确保编写器始终处于关闭状态。

最后,如果文件已经存在,则无需删除它。只需使用false作为第二个参数打开FileWriter,它不会追加到文件的末尾,但会覆盖它。

10-07 13:02
查看更多