ユーザーができるプログラムを作成しようとしています: 1) 連絡先 (名前、電話、電子メール) に人を追加する、2) 連絡先から人を削除する、3) 連絡先からすべてを読み取る。
私がこれを行っている方法は、ユーザーに選択を求め、それぞれが何でもすることです。書き込みの場合は、オブジェクトをファイルに書き込むだけです。削除するには、キーとして使用される「姓」をユーザーに尋ねて(TreeMapを使用しているため)、キーの値(オブジェクト)を削除すると思います。
だから私はここで読むのに問題があります。私は次のようにオブジェクトを読み取ろうとしています:
public void readContact()
{
TreeMap<String, Contact> contactMap = new TreeMap<String, Contact>();
try
{
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(
new FileInputStream(file)));
while( in.available() > 0 ) //This line does NOT read
{
Contact c = (Contact)in.readObject();
contactMap.put(c.getLastName(), c);
}
for(Map.Entry contact : contactMap.entrySet() )
{
Contact con = contactMap.get( contact.getKey() );
System.out.println( con.getLastName() + ", " + con.getFirstName() + ": " + con.getPhoneNumber() + "\t" + con.getEmail());
}
}
catch(Exception e)
{
System.out.println("Exception caught");
}
}
次の理由while(true)
が得られるまで、次のようなことを提案しないでください。EOFException
- それは例外処理の目的ではないと私は信じています
- この後もまだまだやることがあるので、プログラムを終了させるわけにはいきません」