我在用Map写电话本的(Contacts)的时候右括号缺失了,大神们看看哦!

bh1990 2014-06-05 04:00:30
public void writeContacts(RandomAccessFile raf6,int n,int id,long time,String name,String mobileNumber,String address)throws Exception{
long start=300*(n-1);
//raf6.setLength(start+300);
raf6.seek(start);
raf6.writeInt(id);
raf6.writeLong(time);
raf6.write(name.getBytes());
raf6.seek(62+start);
raf6.write(mobileNumber.getBytes());
raf6.seek(92+start);
raf6.write(address.getBytes());
}

public Map<String,Object>readContacts(RandomAccessFile raf6,int n)throws Exception{
int start=300*(n-1);
raf6.seek(start);
int id=raf6.readInt();
Date time=new Date(raf6.readLong());

raf6.seek(12+start);
byte[] buf=new byte[50];
raf6.read(buf);
String name=new String(buf).trim();

raf6.seek(62+start);
byte[] mobileNumbers=new byte[30];
raf6.read(mobileNumbers);
String mobileNumbersR=new String(mobileNumbers);

raf6.seek(92+start);
byte[] address=new byte[50];
raf6.read(address);
String addressR=new String(address).trim();

Map<String,Object>map=new LinkedHashMap<String,Object>();
map.put("id", id);
map.put("Date", time);
map.put("name", name);
map.put("mobileNumbers", mobileNumbersR);
map.put("address", addressR);
return map;
}

@Test
public void testContacts()throws Exception{
RandomAccessFile raf6=new RandomAccessFile("/home/baohan/桌面/Contacts","rw");
writeContacts(raf6,1,1,new Date().getTime(),"baohan","123","myFamily");
/**
raf6.seek(92);
byte[] baohan=new byte[50];
raf6.read(baohan);
System.out.println(new String(baohan).trim());
*/
System.out.println(readContacts(raf6,1));
raf6.close();
}


如果把注释的那段加上,是可以读取address的,但是直接打印Map的时候结果:
{id=1, Date=Thu Jun 05 15:58:50 CST 2014, name=baohan, mobileNumbers=123

可以看到address的key和value缺失了,以及右括号缺失了!
大神求救哦,秒秒钟能解决问题哦!
...全文
61 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧