Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对象保存到文件而不重复_Java_File_Awt_Actionlistener - Fatal编程技术网

Java 将对象保存到文件而不重复

Java 将对象保存到文件而不重复,java,file,awt,actionlistener,Java,File,Awt,Actionlistener,我在将对象保存到文本文件时遇到问题 这是我的一段代码 if(action.equals("Save Person List")) { f1 = new File("PersonList.txt"); if(f1.exists()) { f1.delete(); f1 = new File("PersonList.txt"); } try {

我在将对象保存到文本文件时遇到问题

这是我的一段代码

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'");
    }
在上面的代码中,只要单击按钮,程序就可以将对象的arraylist保存到文件中(我很高兴),但是如果我向arraylist添加更多的对象,并且我想将它们保存到文件中,它会保存新数据,但在此过程中,它会复制文本文件中已经保存的数据

我希望程序能够覆盖文本文件中的数据并写入新的数据。我试图删除文本文件,如果它存在,但它不工作。它显示在代码行中。我有没有办法绕过这个障碍


所有的帮助将不胜感激

通过使第二个参数为“true”,您将以追加模式打开文件,这意味着它将附加您写入文件末尾的任何内容。请尝试在不使用append=true的情况下创建FileWriter,或者显式地将append=false设置为true,然后查看其效果


通过使第二个参数为“true”,您将以追加模式打开文件,这意味着它将附加您写入文件末尾的任何内容。请尝试在不使用append=true的情况下创建FileWriter,或者显式地将append=false设置为true,然后查看其效果


通过使第二个参数为“true”,您将以追加模式打开文件,这意味着它将附加您写入文件末尾的任何内容。请尝试在不使用append=true的情况下创建FileWriter,或者显式地将append=false设置为true,然后查看其效果


通过使第二个参数为“true”,您将以追加模式打开文件,这意味着它将附加您写入文件末尾的任何内容。请尝试在不使用append=true的情况下创建FileWriter,或者显式地将append=false设置为true,然后查看其效果


这是因为,尽管您正在删除文件(如果该文件已经存在),但删除可能会失败:您应该检查
delete()
返回的值。顺便说一句,重新创建
文件
对象也是完全无用的

它失败的原因可能是因为您从未关闭文件的写入程序,因此无法将其删除。您应该使用来确保编写器在完成编写后始终处于关闭状态


最后,如果文件已经存在,则无需删除该文件。只需以
false
作为第二个参数打开一个FileWriter,它不会附加到文件的末尾,而是覆盖它。

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

它失败的原因可能是因为您从未关闭文件的写入程序,因此无法将其删除。您应该使用来确保编写器在完成编写后始终处于关闭状态


最后,如果文件已经存在,则无需删除该文件。只需以
false
作为第二个参数打开一个FileWriter,它不会附加到文件的末尾,而是覆盖它。

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

它失败的原因可能是因为您从未关闭文件的写入程序,因此无法将其删除。您应该使用来确保编写器在完成编写后始终处于关闭状态


最后,如果文件已经存在,则无需删除该文件。只需以
false
作为第二个参数打开一个FileWriter,它不会附加到文件的末尾,而是覆盖它。

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

它失败的原因可能是因为您从未关闭文件的写入程序,因此无法将其删除。您应该使用来确保编写器在完成编写后始终处于关闭状态


最后,如果文件已经存在,则无需删除该文件。只需以
false
作为第二个参数打开一个FileWriter,它不会附加到文件末尾,而是覆盖它。

您可以添加一个检查,检查是否存在同名文件,然后删除它并创建新文件并在其中存储数据。通过这样做,您将始终拥有一个没有重复的新数据。@Ronnie7777:这就是他已经在做的事情。而且完全没有用。阅读我的答案。你可以添加一个检查是否存在同名文件,然后删除它,创建新文件并在其中存储数据。通过这样做,您将始终拥有一个没有重复的新数据。@Ronnie7777:这就是他已经在做的事情。而且完全没有用。阅读我的答案。你可以添加一个检查是否存在同名文件,然后删除它,创建新文件并在其中存储数据。通过这样做,您将始终拥有一个没有重复的新数据。@Ronnie7777:这就是他已经在做的事情。而且完全没有用。阅读我的答案。你可以添加一个检查是否存在同名文件,然后删除它,创建新文件并在其中存储数据。通过这样做,您将始终拥有一个没有重复的新数据。@Ronnie7777:这就是他已经在做的事情。而且完全没有用。阅读我的答案。谢谢你的意见。此外,我们错误地感谢你的意见。此外,我们错误地感谢你的意见。此外,我们错误地感谢你的意见。而且我们也会犯错误
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, false);
        } 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'");
    }