我正在尝试编写一个程序,用户可以: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
因为:
- 我相信这不是异常处理的目的
- 在此之后我还有更多事情要做,所以我不能让程序终止'