RandomAccessFile类

该类不是io体系中的子类(但在IO包中),是Object下的一个子类。随机访问文件,自身具备读写的方法,通过skipBytes(int x),seek(int x)这两个方法随机访问

特点:
   1,该对象即能读,又能写。
   2,该对象内部维护了一个byte数组,并通过指针可以操作数组中的元素,
   3,可以通过getFilePointer方法获取指针的位置,和通过seek方法设置指针的位置。
   4,其实该对象就是将字节输入流和输出流进行了封装。
   5,该对象的源或者目的只能是文件。通过构造函数就可以看出。

 

 

使用RandomAccessFile对象写入一些人员信息,比如姓名和年龄。该类中的写方法能将数据的原字节数写进去

import java.io.IOException;
import java.io.RandomAccessFile;

public class Test {
    public static void main(String[] args) throws IOException {
        writeFile();
    }
    public static void writeFile() throws IOException{
         
        RandomAccessFile raf = new RandomAccessFile("F:\\IO\\ranacc.txt","rw");//如果文件不存在,则创建,如果文件存在,不创建
        
        raf.write("张三".getBytes());
        raf.writeInt(97);
        raf.write("小强".getBytes());
        raf.writeInt(99);
        
        raf.close();
    }
}

 

 

随机读:是通过seek()方法设置角标的位置,从这只的角标位置开始读取

 1 import java.io.IOException;
 2 import java.io.RandomAccessFile;
 3 
 4 public class Test {
 5     public static void main(String[] args) throws IOException {
 6         readFile();
 7     }
 8     public static void readFile() throws IOException {
 9         
10         RandomAccessFile raf = new RandomAccessFile("F:\\IO\\ranacc.txt", "r");
11         
12         //通过seek设置指针的位置。
13         raf.seek(0);//随机的读取。只要指定指针的位置即可。 
14         
15         byte[] buf = new byte[4];
16         raf.read(buf);
17         
18         String name = new String(buf);
19         
20         int age = raf.readInt();
21         
22         System.out.println("name="+name);
23         System.out.println("age="+age);
24         
25         System.out.println("pos:"+raf.getFilePointer());
26         
27         raf.close();
28     }
29 }

 

 

 

随机写:是通过seek()方法设置角标的位置,从这只的角标位置开始写入

import java.io.IOException;
import java.io.RandomAccessFile;

public class Test {
    public static void main(String[] args) throws IOException {
        randomWrite();
    }
    public static void randomWrite() throws IOException{
        //每次创建该对象,都新创建一个新数组,没有设置角标的位置默认是0角标开始
        RandomAccessFile raf = new RandomAccessFile("F:\\IO\\ranacc.txt", "rw");
        
        //往指定位置写入数据。
        raf.seek(100*8);
        
        raf.write("哈哈".getBytes());
        raf.writeInt(108);
        
        raf.close();
    }
}

RandomAccessFile类,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。