如何保存到当前文本文件/更新到当前文本文件?
问题描述:
我目前有一个程序,允许您添加一个新学生,或保存关于当前学生的新信息。我是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);
}
答
您应该使用ArrayList
而不是阵列。所以你可以添加一个新的学生:
ArrayList<Student> studentList = new ArrayList();
然后,而不是迭代你的数组,只需创建一个新的学生对象。
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);
如果你已经添加了所有你想要的学生,你可以追加的studentList到您的文件。所以在这里你遍历你studentList
并将它添加到您的文件
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();
:为运营商增加true
您FileWriter
因为这样,它追加投入是很重要的。你看到\n
?这是一个换行符,这意味着,一个学生只有一行。
哇,谢谢!我现在就试试。 – tshes 2015-02-05 22:39:35
我写过,没有真正能够测试它(仅限文本编辑器)。如果有不清楚或错误的地方,请随时询问。 – Christian 2015-02-05 22:40:58