如何保存到当前文本文件/更新到当前文本文件?

时间:2015-02-05 22:23:25

标签: java bufferedreader filewriter bufferedwriter

我目前有一个程序,允许您添加新学生,或保存有关当前学生的新信息。我是BufferedReader / Writer,FileWriter的新手,我刚刚在这个实验室中使用过它。现在,当我添加新学生时,它会将数据添加到新的文本文件中,并删除当前的学生数组。如果有人能提供帮助那就太棒了。

try 
     {
        if((nameBox.getText().equals("")) || (ageBox.getText().equals("")) || (weightBox.getText().equals(""))|| (allBox.getText().equals("")))
        {
           JOptionPane.showMessageDialog(null, "Error: Please input Data!", "Data?", JOptionPane.ERROR_MESSAGE);
        }
        else 
        {
           studentArray[t] = new Student();
           studentArray[t].changeName(nameBox.getText()) ;
           studentArray[t].changeAge(Integer.parseInt(ageBox.getText()));
           studentArray[t].changeWeight(Double.parseDouble(weightBox.getText()));
           studentArray[t].changeAllergy(Boolean.parseBoolean(allBox.getText()));
           count++;

           System.out.println("" + studentArray[t].getName());
           System.out.println("" + studentArray[t].getAge());
           System.out.println("" + studentArray[t].getWeight());
           System.out.println("" + studentArray[t].getAllergy());
           System.out.println("" );
        }

        //FileWriter files = new FileWriter(file);
        //BufferedWriter pies = new BufferedWriter(files);

        //String data = studentArray[t].getName() + "%" + studentArray[t].getAge()+"%" + studentArray[t].getWeight()+ "%" + studentArray[t].getAllergy();
        //pies.write(data);

        //pies.close(); 

     }

     catch(Exception z)
     {
        JOptionPane.showMessageDialog(null, "Wrong type!", "Type?", JOptionPane.ERROR_MESSAGE);          
     }

1 个答案:

答案 0 :(得分:1)

您应该使用ArrayList而不是数组。所以你可以添加一个新学生:

ArrayList<Student> studentList = new ArrayList();

然后,只需创建一个新的Student对象,而不是遍历您的Array。

Student student = new Student();
student.changeName(nameBox.getText()) ;
student.changeAge(Integer.parseInt(ageBox.getText()));
student.changeWeight(Double.parseDouble(weightBox.getText()));
student.changeAllergy(Boolean.parseBoolean(allBox.getText()));

现在你把它添加到你的studentList:

studentList.add(student);

如果您已添加了所需的所有学生,则可以附加到您的文件中。将true作为运算符添加到FileWriter非常重要,因为这样会附加输入:

FileWriter writer = new FileWriter(file, true); 
  for(Student st: studentList) {
    String data = st.getName() + "%" + st.getAge()+"%" + st.getWeight()+ "%" + st.getAllergy();
    writer.write(data+"\n");
}
writer.close();

所以在这里你迭代studentList并将其附加到你的文件中。你看到\n了?这是一个换行符,这意味着,一个学生有一行。