gpt4 book ai didi

java - 从文件中读取对象并将其添加到数组中

转载 作者:行者123 更新时间:2023-12-02 10:00:59 25 4
gpt4 key购买 nike

我正在尝试从文件中读取对象,然后将它们添加到票证数组列表中。但这不起作用。请问问题出在哪里?

public void writeTicketToFile(Ticket ticket) {
try {
FileOutputStream fileOut = new FileOutputStream("tickets.txt");
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(ticket.toString());
objectOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void readTicketFromFile(){
ArrayList<Ticket> tickets = new ArrayList<Ticket>();
try {
FileInputStream fi = new FileInputStream(new File("tickets.txt"));
ObjectInputStream oi = new ObjectInputStream(fi);
Ticket ticket;
while (ticket=oi.readObject() != null){
tickets.add((Ticket)oi.readObject());
}
System.out.println(tickets);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

最佳答案

您的主要问题之一在于:

while (ticket=oi.readObject() != null){
tickets.add((Ticket)oi.readObject());
}

将您尝试从文件中读取 Ticket 对象的事实与将 Ticket 写入文件的方式进行比较:

objectOut.writeObject(ticket.toString());

如您所见,您将 Ticket 转换为 String 并将 String 写入文件。然后,当您尝试读取时,您正在尝试读取Ticket。相反,您应该读取 String,然后将 String 转换为代码中的 Ticket

如果 Ticket 是可序列化的,您可能只能从写入步骤中删除 .toString() ,但我从未使用过对象流,所以我不能说 100% 是否有效。

关于java - 从文件中读取对象并将其添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55633442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com