本帖最后由 王春晓 于 2013-5-19 18:37 编辑
- public class RandomAccessFileDemo {
- public static void main(String[] args) throws IOException
- {
- //writeFile();
- readFile();
- }
-
- public static void readFile()throws IOException
- {
- RandomAccessFile raf = new RandomAccessFile("ran.txt","r");
-
- //调整对象中的指针
- raf.seek(20*3);
- byte[] buf = new byte[16];//定义一个16字节的数组,用来存储读取到的姓名信息
- raf.read(buf);
- String name = new String(buf);
- //raf.seek(20*3+16);//将指针定位到此位置读取年龄信息
- int age = raf.readInt();
-
- System.out.println("name="+name);
- System.out.println("age="+age);
-
- raf.close();
- }
-
- public static void writeFile()throws IOException
- {
- RandomAccessFile raf = new RandomAccessFile("ran.txt","rw");
-
- raf.seek(20*3);//每二十个字节作为一个存储空间单位,16字节存姓名,4个字节存年龄
- byte[] buf = new byte[16];//定义一个16字节的数组,用来存储姓名信息
- buf = "爱新觉罗溥仪".getBytes();//将某人姓名存入数组中
- raf.write(buf,0,buf.length);//把数组写入流中
- //raf.seek(20*3+16);//定位年龄的指针
- raf.writeInt(12);
- raf.close();
- }
- }
复制代码在讲RandomAccessFile时,说到可以划分区段来读取写入信息,从而达到随机读写的目的,研究了一下写了下面的代码,注释掉的两句功能是定位存入的年龄的指针位置,注释后报错,想不通为什么,不用这两句年龄存入时不也是在这里开始吗?
|