各位大神,小弟初学java,最近学了个RandomAccessFile;于是我做了好几个例子。如下程序中,我先把三个人的姓名和年龄写进文件,然后再通过这个类的方法读取出来,这个程序很简单,我...
各位大神,小弟初学java,最近学了个RandomAccessFile;于是我做了好几个例子。如下程序中,我先把三个人的姓名和年龄写进文件,然后再通过这个类的方法读取出来,这个程序很简单,我也没有疑惑,但是由于好奇心强,我把程序中的两句话的位置对换了,就是在打印第一个人的信息的时候,把age = raf.readInt();和b[i] = raf.readByte();对换了一下。输出结果如下图,其实原理我也懂,我也知道为什么会这样输出,但是有一个地方,在输出结果的里面,也就是第二个人的age=2053661038;这个是什么东西?我看了下ASCII码好像也找不出什么倪端?求大神解谜。麻烦解释为什么age得出这个数,这个数代表什么?源码如下:
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
class Demo10{
public static void main(String[] args) throws Exception{
//指定要操作的文件。
File f = new File("d:"+File.separator+"123.txt");
//实例化RandomAccessFile对象
RandomAccessFile raf = null;
raf = new RandomAccessFile(f,"rw");//读写模式,如果文件不存在会自动创建。
String name = null;
int age = 0;
//下面将文件中的内容读取出来。
//先输出第二个人的信息。
raf.skipBytes(12);
byte b[] = new byte[8];
for(int i=0; i
b[i] = raf.readByte();
}
name = new String(b);//读取姓名。
age = raf.readInt();
System.out.println("第二个人:"+name+"\t"+age);
//将第一个人的信息读取出来
raf.seek(0);
age = raf.readInt();
for(int i=0; i
b[i] = raf.readByte();
}
name = new String(b);//读取姓名。
System.out.println("第一个人:"+name+"\t"+age);
//将第三个人的信息读取出来
raf.skipBytes(12);
for(int i=0; i
b[i] = raf.readByte();
}
name = new String(b);
age = raf.readInt();
System.out.println("第三个人:"+name+"\t"+age);
}
}
下面是写入文件的信息
name = "zhangsan";//字符串长度为8;
age = 31; //数字长度为4;
raf.writeBytes(name); //将姓名写入文件
raf.writeInt(age); //将年龄写入文件
name = "lisi ";//字符串长度为8;
age = 31; //数字长度为4;
raf.writeBytes(name); //将姓名写入文件
raf.writeInt(age); //将年龄写入文件
name = "wangwu ";//字符串长度为8;
age = 31; //数字长度为4;
raf.writeBytes(name); //将姓名写入文件
raf.writeInt(age); //将年龄写入文件
raf.close(); //一定要关闭资源
展开