Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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文件输入输出中使用arraylist_Java_Arraylist_File Io_Fileinputstream - Fatal编程技术网

在java文件输入输出中使用arraylist

在java文件输入输出中使用arraylist,java,arraylist,file-io,fileinputstream,Java,Arraylist,File Io,Fileinputstream,所以,问题来了。我想使用java GUI创建一个文件,这类似于用户可以在我的GUI中创建一个帐户或登录,然后他们的帐户在我的GUI中变成file.txt。但是,我这里有个问题。当我在GUI中创建一个帐户时,它工作得很好,并且创建了文件。但是,当我再次尝试创建一个帐户时,一个以前创建的帐户消失了。所以,我想在这种情况下我需要使用arraylist,我使用了它,但它仍然不起作用。代码如下: String filename="D:/settings.txt"; public void getIden

所以,问题来了。我想使用java GUI创建一个文件,这类似于用户可以在我的GUI中创建一个帐户或登录,然后他们的帐户在我的GUI中变成file.txt。但是,我这里有个问题。当我在GUI中创建一个帐户时,它工作得很好,并且创建了文件。但是,当我再次尝试创建一个帐户时,一个以前创建的帐户消失了。所以,我想在这种情况下我需要使用arraylist,我使用了它,但它仍然不起作用。代码如下:

String filename="D:/settings.txt";

public void getIdentity() throws FileNotFoundException, IOException{
    File file = new File(filename);
    ArrayList identity = new ArrayList();

    String fullname = txt_fullname.getText();
    String username = txt_username.getText();
    String password = pass_password.getText();

    try {
        FileWriter fw = new FileWriter(filename);
        Writer output = new BufferedWriter(fw);

        identity.add(fullname + "-" + username + "-" + password);

        for (int i = 0; i <identity.size(); i++)
        {
         output.write(identity.get(i).toString() + "\n");
        }
        output.close();
    }


    catch (Exception ex)
    {
        JOptionPane.showMessageDialog(null, "Cannot create a file");
    }

}

您有
FileWriter fw=newfilewriter(文件名);

因此,每次调用函数时,文件都会被一次又一次地重写

所以你有两个选择:

  • 为每个设置文件名存储一个凭据。(例如,您可以通过在设置文件中附加用户名来区分文件)
  • 将所有凭证存储到
    设置
    文件。但您必须在
    附加
    模式下打开文件

        FileWriter fw = new FileWriter(filename, true); // true flag indicate appending mode
    
    而且,您还必须更改您的读取端,因为您的设置文件现在存储所有凭证


  • 如果此答案适合您,请将答案标记为“已接受”。
        FileWriter fw = new FileWriter(filename, true); // true flag indicate appending mode