gpt4 book ai didi

Java 将文件读入对象数组列表并返回该数组列表

转载 作者:行者123 更新时间:2023-12-02 13:11:05 25 4
gpt4 key购买 nike

我需要编写一个具有两个静态方法的类:writeFilereadFile。但是,在我执行 readFile() 后,它什么也没有返回。

class writereadFile {
public static void writeFile(ArrayList<Object> list, File file){
try {
try (FileOutputStream fos = new FileOutputStream(file);ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(list);
oos.close();
}
}catch(IOException e){e.getMessage();}
}

public static ArrayList<Object> readFile(ArrayList<Object>list, File file){
try {
try (FileInputStream fis = new FileInputStream(file);ObjectInputStream ois = new ObjectInputStream(fis)) {
Object o = ois.readObject();
list = (ArrayList<Object>) o;
ois.close();
}
}catch(IOException | ClassNotFoundException e){e.getMessage();}
System.out.println(list);
return list;
}
}

编辑:这是我的测试课。我的对象是自定义对象的数组列表,如果您需要自定义对象只需注释即可。

class main {
public static void main(String[] args) {
Date date = new Date();
Book b1 = new Book("abc", "Phi", true, date, null);
Book b2 = new Book("cba", "Someone", true, date, null);
Books booklist = new Books();
booklist.add(b1);
booklist.add(b2);

File filetoDo = new File("book.txt");

//write arraylist into file
writereadFile.writeFile(booklist, filetoDo);

//clear the arraylist
booklist.clear();

//read book from file
writereadFile.readFile(booklist, filetoDo);
System.out.println(booklist);
}
}

最佳答案

您的测试应为:

bookList = writereadFile.readFile(booklist, filetoDo);

顺便说一下,您应该将您的 readFile 方法重构为简单的:

public static ArrayList<Object> readFile(File file)

你不能像这样修改参数reference,因为Java总是 pass-by-value 调用语义。 (您可以修改函数内的 list 参数contents,但这不是您正在做的事情。)

关于Java 将文件读入对象数组列表并返回该数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43955940/

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