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

时间:2013-10-09 18:42:02

标签: java io binaryfiles

好的,所以我有一个'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,但文件在同一个包中位置,任何想法?

也是它自己正确构造的代码吗?

感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:1)

当应用程序看到

new FileInputStream("justADog.dat")

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

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