日期:2014-05-20  浏览次数:20731 次

请问RMS里可以用链表来实现不定长的记录吗?
记录的长度是不固定的,能给个例子吗?

------解决方案--------------------
class Person
{
int id;
String name;
String[] tels;//数组保存,以适应变长数据
String[] Emails;//同上

//保存到输出流
void save(DataOutputStream dos)
{
dos.writeInt(id);
dos.writeUTF(name);
dos.writeInt(tels.length);
for(int i=0;i <tels.length)
dos.writeUTF(tels[i]);
dos.writeInt(Emails.length);
for(int i=0;i <Emails.length;i++)
dos.writeUTF(Emails[i]);
}
//从输入流里读出
public void load(DataInputStream dis)
{
id=dis.readInt();
name=dis.readUTF();
tels=new String[dis.readInt()];
for(int i=0;i <tels.length;i++)
tels[i]=dis.readUTF();
Emails=new String[dis.readInt()];
for(int i=0;i <Emails.length;i++)
Emails[i]=dis.readUTF();
}
}
------解决方案--------------------
至于rms记录如何转为输入输出流,可借助字节数组输入输出流来完成

//保存
ByteArrayOutputStream baos=new ByteArrayOutputStream();
DataOuputStream dos=new DataOutputStream(baos);
save(dos);
byte[] record=baos.toByteArray();
...//RMS设置该字节数组到指定记录

//载入
byte[] record=....//RMS读入指定记录
ByteArrayInputStream bais=new ByteArrayInputStream(record);
DataInputStream dis=new DataInputStream(bais);
load(dis);