2013-10-09 86 views
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,但该文件是在相同的包装和位置,有什么想法?

也就是它的代码自我结构正确?

感谢您的任何和所有帮助

回答

1

当应用程序看到

new FileInputStream("justADog.dat") 

它会在应用程序被启动目录的文件名。我很怀疑你的应用程序从包类是在跑。

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

+0

他们是在同一个项目文件夹,还当我从性能得到完整的路径我仍然有同样的问题。 – user2745043

+0

@user谁是_they_? –

+0

我试图测试的二进制文件和所有类 – user2745043