好的,所以我有一个'Animal'类抽象,子类'Dog'和'Bird'我需要编写一个程序来读取二进制文件中未知数量的Animal对象。
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,但文件在同一个包中位置,任何想法?
也是它自己正确构造的代码吗?
感谢您提供的任何帮助
答案 0 :(得分:1)
当应用程序看到
时new FileInputStream("justADog.dat")
它在启动应用程序的目录中查找文件名。我非常怀疑你的应用程序是从你的课程所在的包中运行的。
提供文件的完整路径或将文件移动到运行应用程序的位置。使用Eclipse,应用程序从项目文件夹启动。