0

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

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,但文件位于相同的包和位置,任何想法?

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

感谢您的任何帮助

4

1 回答 1

1

当应用程序看到

new FileInputStream("justADog.dat")

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

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

于 2013-10-09T18:43:29.863 回答