gpt4 book ai didi

java - 写入和读取 ArrayList

转载 作者:行者123 更新时间:2023-11-30 07:50:34 24 4
gpt4 key购买 nike

所以我在这方面还很陌生,但我已经构建了一个图书馆项目,它有一个 ArrayList BookList,而 BookList 又包含 String Title、String Author 和 int Quantity 等元素​​。我有一个添加方法和一个显示方法,我想创建一个方法,当我提供适当的输入时,我能够保存和加载 BookList。此外,我想这样做,所以当我加载 BookList 时,我可以对 ArrayList 中的元素进行更改,而不仅仅是从文件中读取。

public class Library implements Serializable{...}

在这个类中是我在主类中调用的保存和加载方法以及 ArrayList 的构造函数。

保存

   public void save(){
try{
FileOutputStream fileOut = new FileOutputStream("BookList.tmp");
ObjectOutputStream objOut = new ObjectOutputStream(fileOut);
objOut.writeObject(BookList);
objOut.close();
}catch(Exception ev){}
}//end of save()

加载

    public void load(){
try{
FileInputStream fileInput = new FileInputStream("BookList.tmp");
ObjectInputStream objInput = new ObjectInputStream(fileInput);
List<Book> BookList = (List<Book>) objInput.readObject();
objInput.close();
}
catch (Exception ev){}
}//end of load()

显示

    public void displayBooks(){
String t;
String a;
int q;
String s;
Book bo = new Book();
for(int i = 0; i<BookList.size(); i++){
bo = BookList.get(i);
t = bo.gettitle();
a = bo.getauthor();
q = bo.getquantity();
System.out.println(i + "." + t + " " + a + " " + q);
}//end of loop
}//end of displayBooks()

但到目前为止,通过显示方法我无法看到 BookList,所以我不知道保存方法是否也能正常工作。所以我想知道问题出在这里还是其他地方。

最佳答案

问题出在你的 load() 中,你从 ObjectInputStream 中读取了图书列表,但你只是简单地分配给了一个局部变量。我相信(虽然命名不当)您的 BookList 是一个实例变量。

所以你的load()应该是这样的

public void load(){
try{
ObjectInputStream objInput = new ObjectInputStream(FileInputStream("BookList.tmp"));
this.books = (List<Book>) objInput.readObject();
objInput.close();
}
catch (Exception ignored){
// please add some handling please!
}
}

关于java - 写入和读取 ArrayList<model>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47691615/

24 4 0