Я пытаюсь создать программу, в которой пользователь вводит личную информацию в форму, которая сохраняется как объект ArrayList со строковыми переменными и сохраняет его в файл. Я хочу, чтобы этот файл был сохранен, даже когда программа закрыта, и когда новый человек вводит свою информацию, он создает новый ArrayList и добавляет в файл.Сохранить ArrayList для сопоставления идентификаторов файлов и поиска
Моя проблема заключается в попытке создать функцию поиска, которая позволяет вам искать свой идентификационный номер и цифры, если вы уже находитесь в файле. Это мой метод ActionListener:
public void actionPerformed(ActionEvent e)
{
strID = tfID.getText();
strName = tfName.getText();
strYear = tfYear.getText();
strSubject = tfSubject.getText();
dblGPA = Double.parseDouble(tfGPA.getText());
strComment = tfComment.getText();
Student newStudent = new Student(strID, strName, strYear, strSubject, dblGPA, strComment);
ArrayList<Student> studentInfo = new ArrayList<Student>();
studentInfo.add(newStudent);
try {
writeFile(studentInfo);
System.out.println(loadFile().toString());
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
Тогда мой читать и писать методы:
public static void writeFile(ArrayList<Student> studentInfo) throws IOException {
FileOutputStream fos = new FileOutputStream(new File("studentlog.dat"), true);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(studentInfo);
oos.close();
}
public static ArrayList<Student> loadFile() throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream(new File("studentlog.dat"));
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<Student> sAL = (ArrayList<Student>) ois.readObject();
ois.close();
return sAL;
}
Теперь мне просто нужен метод ActionListener для кнопки поиска, которая будет искать идентификационный номер из JTextField tfSearch, то сравните его с существующими идентификационными номерами в файле. Я чувствую, что делаю что-то ужасно неправильно, но это может быть просто глупая ошибка.