认识-----RandomAccessFile类

来源:互联网 发布:网络水晶头品牌 编辑:程序博客网 时间:2024/06/01 18:13

作用:完成随机读取功能,可以读取指定位置的内容。

使用方法:

①通过构造方法public RandomAccessFile(File file,String mode) throwsFileNotFoundException实现对象的实例化,关于mode可以查看JDK API可知,主要有”r”、“rw”等。

②通过该类的方法可以进行随机读取操作,通过读指针的重定位和跳过字节数来完成。

示例:

写文件:

package demo; import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile; public class RandomAccessFileDemo01 {          /**          * @param args          */         publicstatic void main(String[] args) {                   //TODO Auto-generated method stub                   Filef = new File("d:" + File.separator + "test.txt");                   RandomAccessFilerdf = null;                   try{                            rdf= new RandomAccessFile(f, "rw");                   }catch (FileNotFoundException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }                   Stringname = null;                   intage = 0;                                     name= "zhangsan";                   age= 30;                   try{                            rdf.writeBytes(name);                            rdf.writeInt(age);                   }catch (IOException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }                                     name= "lisi    ";                   age= 31;                   try{                            rdf.writeBytes(name);                            rdf.writeInt(age);                   }catch (IOException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }                                     name= "wangwu  ";                   age= 30;                   try{                            rdf.writeBytes(name);                            rdf.writeInt(age);                   }catch (IOException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }finally {                            try{                                     rdf.close();                            }catch (IOException e) {                                     //TODO Auto-generated catch block                                     e.printStackTrace();                            }                   }                           }        }


读文件:

package demo; import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile; public class RandomAccessFileDemo02 {          /**          * @param args          */         publicstatic void main(String[] args) {                   //TODO Auto-generated method stub                   Filef = new File("d:" + File.separator + "test.txt");                   RandomAccessFilerdf = null;                   try{                            rdf= new RandomAccessFile(f, "r");                   }catch (FileNotFoundException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }                                     Stringname = null;                   intage = 0;                   byteb[] = new byte[8];                                     try{                            rdf.skipBytes(12);                            for(int i = 0; i < b.length; i++) {                                     b[i]= rdf.readByte();                            }                            name= new String(b);                            age= rdf.readInt();                   }catch (IOException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }                   System.out.println("第二个人的信息--> 姓名:" + name + ";年龄:" + age);                                     try{                            rdf.seek(0);                            for(int i = 0; i < b.length; i++) {                                     b[i]= rdf.readByte();                            }                            name= new String(b);                            age= rdf.readInt();                   }catch (IOException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }                   System.out.println("第一个人的信息--> 姓名:" + name + ";年龄:" + age);                                     try{                            rdf.skipBytes(12);                            for(int i = 0; i < b.length; i++) {                                     b[i]= rdf.readByte();                            }                            name= new String(b);                            age= rdf.readInt();                   }catch (IOException e) {                            //TODO Auto-generated catch block                            e.printStackTrace();                   }finally {                            try{                                     rdf.close();                            }catch (IOException e) {                                     //TODO Auto-generated catch block                                     e.printStackTrace();                            }                   }                   System.out.println("第三个人的信息--> 姓名:" + name + ";年龄:" + age);              } }

注意:

①如果使用rw方式声明RandomAccessFile对象时,要写入的文件不存在,系统将自动创建。

②由于随机读写流对文件内容的操作过于负责,一般情况下操作文件内容往往会使用字节流或字符流。


0 0