java RandomAccessFile的使用
案例:
1、
1 package cn.kongxh.io2; 2 import java.io.File ; 3 import java.io.RandomAccessFile ; 4 public class RandomAccessFileDemo01{ 5 // 所有的异常直接抛出,程序中不再进行处理 6 public static void main(String args[]) throws Exception{ 7 File f = new File("d:" + File.separator + "test.txt") ; // 指定要操作的文件 8 RandomAccessFile rdf = null ; // 声明RandomAccessFile类的对象 9 rdf = new RandomAccessFile(f,"rw") ;// 读写模式,如果文件不存在,会自动创建 10 String name = null ; 11 int age = 0 ; 12 name = "zhangsan" ; // 字符串长度为8 13 age = 30 ; // 数字的长度为4 14 rdf.writeBytes(name) ; // 将姓名写入文件之中 15 rdf.writeInt(age) ; // 将年龄写入文件之中 16 name = "lisi " ; // 字符串长度为8 17 age = 31 ; // 数字的长度为4 18 rdf.writeBytes(name) ; // 将姓名写入文件之中 19 rdf.writeInt(age) ; // 将年龄写入文件之中 20 name = "wangwu " ; // 字符串长度为8 21 age = 32 ; // 数字的长度为4 22 rdf.writeBytes(name) ; // 将姓名写入文件之中 23 rdf.writeInt(age) ; // 将年龄写入文件之中 24 rdf.close() ; // 关闭 25 } 26 };
2、
1 package cn.kongxh.io2; 2 import java.io.File ; 3 import java.io.RandomAccessFile ; 4 public class RandomAccessFileDemo02{ 5 // 所有的异常直接抛出,程序中不再进行处理 6 public static void main(String args[]) throws Exception{ 7 File f = new File("d:" + File.separator + "test.txt") ; // 指定要操作的文件 8 RandomAccessFile rdf = null ; // 声明RandomAccessFile类的对象 9 rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件 10 String name = null ; 11 int age = 0 ; 12 byte b[] = new byte[8] ; // 开辟byte数组 13 // 读取第二个人的信息,意味着要空出第一个人的信息 14 rdf.skipBytes(12) ; // 跳过第一个人的信息 15 for(int i=0;i<b.length;i++){ 16 b[i] = rdf.readByte() ; // 读取一个字节 17 } 18 name = new String(b) ; // 将读取出来的byte数组变为字符串 19 age = rdf.readInt() ; // 读取数字 20 System.out.println("第二个人的信息 --> 姓名:" + name + ";年龄:" + age) ; 21 // 读取第一个人的信息 22 rdf.seek(0) ; // 指针回到文件的开头 23 for(int i=0;i<b.length;i++){ 24 b[i] = rdf.readByte() ; // 读取一个字节 25 } 26 name = new String(b) ; // 将读取出来的byte数组变为字符串 27 age = rdf.readInt() ; // 读取数字 28 System.out.println("第一个人的信息 --> 姓名:" + name + ";年龄:" + age) ; 29 rdf.skipBytes(12) ; // 空出第二个人的信息 30 for(int i=0;i<b.length;i++){ 31 b[i] = rdf.readByte() ; // 读取一个字节 32 } 33 name = new String(b) ; // 将读取出来的byte数组变为字符串 34 age = rdf.readInt() ; // 读取数字 35 System.out.println("第三个人的信息 --> 姓名:" + name + ";年龄:" + age) ; 36 rdf.close() ; // 关闭 37 } 38 };