我试图从txt文件中读取学生的地图,之后我向地图中添加一个新学生(现在比以前更大)并将其保存回文件。关闭程序并重新加载文件中的数据后,新学生未保存。难以将文件写入文件
HashMap<String, Student> studentObj = new HashMap<>(SIZE);
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(DEFAULT_FILE_NAME));
studentObj = (HashMap<String, Student>) in.readObject();
studentObj.put(student.getStudentID(), student);
ObjectOutputStream out;
out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(DEFAULT_FILE_NAME)));
out.writeObject(studentObj);
out.flush();
System.out.println("here " + studentObj.size());
in.close();
out.close();
} catch (IOException e) {
throw new Exception("FILE IS NOT CREATED");
} catch (ClassNotFoundException e) {
throw new Exception("CLASS NOT FOUND EXCPETION");
}
打印异常的堆栈跟踪:'e.printStackTrace()'。这会告诉你遇到的问题。 –
我建议处理数据并保存,例如作为文本文件而不是使用ObjectOutputStream。你可以for循环,将数据保存到数组中,并以一种可以让你再次正确读取它们的方式保存它们。 – xdevs23
捕捉各种异常然后将它们作为基本异常抛出并没有真正的意义。要么处理这些异常,要么让你的方法抛出那些特定的异常,或者简单地抛出异常,如果你不关心它们是什么类型的话。如果您打印异常的堆栈跟踪,那么您将看到问题所在。 – ManoDestra