java RandomAccessFile 类

来源:互联网 发布:python 单核可以子进程 编辑:程序博客网 时间:2024/05/19 21:18

RandomAccessFile 类

是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法。RandomAccessFile 类支持“随机访问”方式,可以跳转到文件的任意位置处读写数据。在要访问一个文件的时候,不想把文件从头读到尾,而是希望像访问一个数据库一样地访问一个文本文件,这时,使用RandomAccessFile类就是最佳选择。

RandomAccessFile 对象类有个位置指示器,指向当前读写处的位置,当读写n个字节后,文件指示器将指向这n个字节后的下一个字节处。刚打开文件时,文件指示器指向文件的开头处,可以移动文件指示器到新的位置,随后的读写操作将从新的位置开始。RandomAccessFile在数据等长记录格式文件的随机(相对顺序而言)读取时有很大的优势,但该类仅限于操作文件,不能访问其它的IO 设备,如网络、内存映像等。

以读写的方式打开一个文件时,如果文件不存在,程序会自动创建此文件。

RandomAccessFile类中的常用方法:
                                
  void close();             关闭此随机访问文件流并释放与该流关联的所有系统资源。           
  long getFilePointer();   返回此文件中的当前偏移量。                        
  long length();           返回此文件的长度。                            
  read函数集                   从文件读                                 
  void seek(long pos);     设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
  int skipBytes(int n)     尝试跳过输入的 n 个字节以丢弃跳过的字节。               
  write函数集                 往文件写                                 
  setLength(long newLength) 设置文件大小(设置临时文件)                       

 RandomAccessFile 类的构造方法

1. new RandomAccessFile(f, "rw"); // 读写方式
2. new RandomAccessFile(f, "r");   // 只读方式

向文件中记忆写入数据

File file = new File("accessFile");    RandomAccessFile raf = new RandomAccessFile(file, "rw");        // 以下向 raf 文件中写数据      raf.writeInt(20);// 占4个字节    raf.writeDouble(8.236598);// 占8个字节      raf.writeShort(395);// 占2个字节      raf.writeUTF("这是一个UTF字符串");// 这个长度写在当前字符串指针的前两个字节处,可用readShort()读取      raf.writeBoolean(true);// 占1个字节      raf.writeLong(2325451l);// 占8个字节      raf.writeUTF("又是一个UTF字符串哈哈");      raf.writeFloat(35.5f);// 占4个字节      raf.writeChar('a');// 占2个字节      raf.close();

从文件中读取随机记忆的文件内容

    File file = new File("accessFile");    RandomAccessFile raf = new RandomAccessFile(file, "rw");    System.out.println(raf.readInt());//读取Int数据,指针会往后移动4字节    System.out.println(raf.readDouble());//读取Double数据,指针会往后移动8字节    System.out.println(raf.readUTF());//读取字符串,指针会移到该字符串后    raf.skipBytes(3);//跳过3个字节,也就是跳过上面例子的 boolen 和 short 值。    System.out.println(raf.readLong());//读取long值    short readShort = raf.readShort();//读取字符串的长度    System.out.println("目前指针处的字符串长度为=" + readShort);    raf.skipBytes(readShort);//跳过该字符串    System.out.println(raf.readFloat());//读取float值    System.out.println(raf.readChar());//读取char值        //long length = raf.length();    //System.out.println("文件的总字节数为:"+length);        //long filePointer = raf.getFilePointer();//当前指针的位置,定位到哪个字节了。    //System.out.println("目前字节指针定位在:"+filePointer);        //raf.seek(4);//直接定位到第4个字节处。    


原创粉丝点击