我正在编写一个跟踪图书馆书籍的程序。有一个对象书,其中包括标题,SKU号,价格和数量。所有书籍都存储在数组列表中。我正在尝试序列化书籍和添加的新书籍,但是每次添加书籍时,最后一个都会被覆盖。
这是下面的代码,用于从保存加载对象
public static void readSave() {
File stockFile = new File("inventory.txt");
try {
if(!stockFile.createNewFile() && stockFile.length() != 0) {
ObjectInputStream objIn = new ObjectInputStream(new FileInputStream(stockFile));
int size = objIn.readInt();
for(int i = 0; i < size; i++) {
Book t = (Book) objIn.readObject();
bookList.add(t);
}
objIn.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是我的保存方法,它设置为每次执行程序时保存。
public static void save() {
File inventoryFile = new File("inventory.txt");
ObjectOutputStream objOut;
try {
objOut = new ObjectOutputStream(new FileOutputStream(inventoryFile));
objOut.writeInt(bookList.size());
Iterator<Book> i = bookList.iterator();
while(i.hasNext()){
objOut.writeObject(i.next());
}
objOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
下面是我调用这些函数的主要方法
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
readSave();
CampusBookWindow window = new CampusBookWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
save();
}
});
}
答案 0 :(得分:0)
我的问题是当我点击添加书籍按钮时,我不会为该项目创建一个新的书籍对象,而是我重新分配了最后一个书籍对象,因此对象最后一个书籍对象从 bookList 数组列表中删除