IO之随机读写流RandomAccessFile

来源:互联网 发布:淘宝客服服务回复 编辑:程序博客网 时间:2024/05/17 08:58

特点:

                 不是io体系中的子类。

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


构造方法摘要RandomAccessFile(File file,String mode)
          创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。RandomAccessFile(String name,String mode)
          创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

mode解释:

含意

"r"以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException"rw"打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。

方法:

 booleanreadBoolean()
          从此文件读取一个 boolean。其余类比 StringreadLine()
          从此文件读取文本的下一行。 voidwrite(byte[] b)
          将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 voidwrite(byte[] b, int off, int len)
          将 len 个字节从指定 byte 数组写入到此文件,并从偏移量 off 处开始。 voidwrite(int b)
          向此文件写入指定的字节。 voidwriteInt(int v)
          按四个字节将 int 写入该文件,先写高字节。 voidwriteLong(long v)
          按八个字节将 long 写入该文件,先写高字节。 voidwriteShort(int v)
          按两个字节将 short 写入该文件,先写高字节。


import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class RandomAccessFileDemo {/** * @param args * @throws IOException  */public static void main(String[] args) throws IOException { //writeFile();//readFile();randomWrite();}public static void randomWrite() throws IOException{RandomAccessFile raf = new RandomAccessFile("ranacc.txt", "rw");//往指定位置写入数据。raf.seek(3*8);raf.write("哈哈".getBytes());raf.writeInt(108);raf.close();}public static void readFile() throws IOException {RandomAccessFile raf = new RandomAccessFile("ranacc.txt", "r");//通过seek设置指针的位置。raf.seek(1*8);//随机的读取。只要指定指针的位置即可。 byte[] buf = new byte[4];raf.read(buf);String name = new String(buf);int age = raf.readInt();System.out.println("name="+name);System.out.println("age="+age);System.out.println("pos:"+raf.getFilePointer());raf.close();}//使用RandomAccessFile对象写入一些人员信息,比如姓名和年龄。public static void writeFile() throws IOException{/* * 如果文件不存在,则创建,如果文件存在,不创建 *  */RandomAccessFile raf = new RandomAccessFile("ranacc.txt","rw");raf.write("张三".getBytes());raf.writeInt(97);raf.write("小强".getBytes());raf.writeInt(99);//raf.close();}}


RandomAccessFile:
    特点:
    1,即可读取,又可以写入。
    2,内部维护了一个大型的byte数组,通过对数组的操作完成读取和写入。
    3,通过getFilePointer方法获取指针的位置,还可以通过seek方法设置指针的位置。
    4,该对象的内容应该封装了字节输入流和字节输出流。
    5,该对象只能操作文件。
    
    通过seek方法操作指针,可以从这个数组中的任意位置上进行读和写
    可以完成对数据的修改。
    但是要注意:数据必须有规律。


0 0
原创粉丝点击