我查看了一些關於此問題的問題,但無法解決我的問題。如何將序列化文件加載回arrayList
正如您在下面看到的,我通過序列化將我的Patient ArrayList
(pList
- 這是私人的類在頂部)保存到「Patient.ser」文件中的所有對象。據我所知,這是沒有問題的工作。 「patSizeAtSave
」是我使用的標記爲綁定加載文件時一起工作(見下文)
私有變量「patModel
」是DefaultListModel
我在GUI
使用的JLists
,所以我嘗試用填充了什麼添加回Patient ArrayList(pList)
我的問題這些列表:當我擊中了GUI
Load按鈕它調用下面的方法loadPatientList()
,但什麼都沒有把我的JList的,所以我不能告訴它是否工作。
任何想法如何解決這個問題?
private void savePatientList() throws FileNotFoundException {
try
{
FileOutputStream fs = new FileOutputStream("Patient.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
for(Patient p: pList)
{
os.writeObject(p);
}
fs.close();
os.close();
patSizeAtSave = pList.size();
JOptionPane.showMessageDialog(jTabPane, "Save Complete!", "Notification", JOptionPane.INFORMATION_MESSAGE);
}
catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void loadPatientList()
{
FileInputStream fs;
ObjectInputStream is;
try
{
fs = new FileInputStream("Patient.ser");
is = new ObjectInputStream(fs);
for(int i = 0; i < patSizeAtSave; i++)
{
Patient p = (Patient) is.readObject();
pList.add(p);
patModel.addElement(p.getPNo() + ": " + p.getPName());
}
jListPatient.setModel(patModel);
jListPatient2.setModel(patModel);
fs.close();
is.close();
}
catch (FileNotFoundException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
謝謝你這麼多人!那現在沒有問題了! 這是一個與私人變量patSaveAtSize愚蠢的錯誤,我忘了它已經不存在了...... 但是,我曾嘗試通過保存和加載整個arraylist作爲一個對象之前,但我沒有做的是包括「」在ArrayList中轉換回代碼的一部分。非常感謝,再次。 –
Chris
我很高興能夠提供幫助。您能否投票並將您的問題標記爲已回答。在此先感謝您的時間。 – Marc
涼爽的男人多數民衆贊成在做,即時通訊新的這個網站如此生病請務必記住在未來包裝它 – Chris