-1

バイナリファイルから画面にクラスオブジェクトの配列を読み取るのに問題があります。これまでのところ、ファイルに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;
4

1 に答える 1

3

オブジェクトストリームには、Personではなく、一連の個々のオブジェクトが含まれているようPerson[]です。

ストリームにを入れたい場合はPerson[]、書き込みコードを変更する必要があります。そうでない場合は、おそらく何人の人が読むかを知って、次のように使用する必要があります。

for (int i = 0; i < count; i++) {
    Person person = (Person) ois.readObject();
    // Display the person
}
于 2013-02-26T08:15:08.510 に答える