关于RandomAccessFile的问题。
public class output{
public static void main (String[] arg) throws Exception{
File file= new File("D:\\jdk1.6\\jdk1.6\\new.txt");
RandomAccessFile raf = new RandomAccessFile(file,"rw");
String name ="张三凑够八个数字";
int age =30;
raf.writeBytes(name);
raf.writeInt(age);
String name2 ="lisi";
int age2 =31;
raf.writeBytes(name2);
raf.writeInt(age2);
String name3 ="wangwu";
int age3 =33;
raf.writeBytes(name3);
raf.writeInt(age3);
raf.close();
}
}
------------------------------------------------
public class input{
public static void main (String[] arg) throws Exception{
File file= new File("D:\\jdk1.6\\jdk1.6\\new.txt");
RandomAccessFile raf = new RandomAccessFile(file,"rw");
byte[] a =new byte[12];
String name ="";
int age=0;
raf.skipBytes(12);
System.out.println("第二个人信息");
for(int i=0;i<8;i++){
a[i] =raf.readByte();
}
age=raf.readInt();
System.out.println("姓名:"+new String(a));
System.out.println("年龄:"+age);
raf.seek(0);
System.out.println("第一个人信息:");
for(int i=0;i<8;i++){
a[i] =raf.readByte();
}
age =raf.readInt();
System.out.println("姓名:"+new String(a));
System.out.println("年龄:"+age);
raf.close();
}
}
两个类,先写入再读取。问题是在于读取那里,为什么skipByte是跳过12个字节?不是应该跳过20个么?"zhangsan"是占16位不是么。?后面的年龄30是int,占4位?按他这里的算法不是把zhangsan当成是8位了???我记得String就是一个char数组,char是占两个的。。望各位能给个详细解释,谢谢大家