gpt4 book ai didi

java - 从二进制文件中读取任意数量的对象

转载 作者:行者123 更新时间:2023-12-01 14:02:02 27 4
gpt4 key购买 nike

好吧,我有一个“动物”类,它是带有子类“狗”和“鸟”的抽象类,我需要编写一个程序来从二进制文件中读取未知数量的动物对象。

public static void main(String[] args) throws FileNotFoundException {
readAnimals("birdsAndDogs.dat");

}

public static List<Animal> readAnimals(String filename) {
List<Animal> animals = new ArrayList<Animal>();
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream(filename));

try {
while (true) {
Animal a =(Animal) ois.readObject();

if (a instanceof Animal)
animals.add((Animal)a);
System.out.println(a);
}
}
catch (EOFException eof) {
ois.close();
ois = null;
return animals;
}
}
catch (Exception e) {
return null;
}
}
}

这是我第一次尝试读取二进制文件,所以放轻松,代码可能非常困惑,我不确定,但我的主要问题是我不断收到 FileNotFoundExeption,但文件位于同一个包中,并且位置,有什么想法吗?

代码本身的结构是否正确?

感谢您的帮助

最佳答案

当应用程序看到

new FileInputStream("justADog.dat")

它在启动应用程序的目录中查找文件名。我非常怀疑您的应用程序是从您的类所在的包中运行的。

提供文件的完整路径或将文件移动到运行应用程序的位置。使用 Eclipse,应用程序从您的项目文件夹启动。

关于java - 从二进制文件中读取任意数量的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19280084/

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