【问题标题】:trouble reading an array of class objects to screen from binary file从二进制文件中读取要筛选的类对象数组时遇到问题
【发布时间】:2013-02-26 08:13:24
【问题描述】:

无法将二进制文件中的类对象数组读取到屏幕上。到目前为止,我只能读取第一个对象,尽管文件上有 46 个单独的对象。代码如下:

private void readBinaryFile()
{
    ObjectInputStream ois = null;
    Person[] personData = null;
     try 
     {
         ois = new ObjectInputStream(new FileInputStream(FILE));
         personData = (Person[]) ois.readObject();

         for(Person p : personData)
         {  
             System.out.println(p.getName() +
                       "\t" + p.getRanking() +
                       "\t  " + p.getIDNumber());
         }
         ois.close();
     }
     catch (FileNotFoundException e) {}
     catch (IOException e) {}
     catch (ClassNotFoundException e) {}
}

即使代码编译,当我调用该方法时,我也会收到此错误:

java.lang.ClassCastException: Person cannot be cast to [LPerson;

【问题讨论】:

  • .readObject(); 似乎返回一个 Person 而不是 Persons 的数组。

标签: java arrays class object binaryfiles


【解决方案1】:

看起来您的对象流包含一系列单独的 Person 对象 - 而不是 Person[]

如果您想在流中添加Person[],则应更改编写代码 - 否则,您大概应该知道要阅读多少人,然后使用:

for (int i = 0; i < count; i++) {
    Person person = (Person) ois.readObject();
    // Display the person
}

【讨论】:

  • @mtk 真的有必要吗?
猜你喜欢
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多