黑马程序员技术交流社区

标题: RandomAccessFile:随机访问文件 [打印本页]

作者: MUFCRyanCR7    时间: 2015-8-29 22:05
标题: RandomAccessFile:随机访问文件
/*
RandomAccessFile:随机访问文件,不是IO体系中的子类,它直接继承自Object,
        但它是IO包中的成员,同时具备读写功能,它同时完成读写的原理是其内部
        封装了字节输入流、输出流。其内部封装了一个大型的字节数组,并且通过
        指针对数组的元素进行操作,由于指针的存在,通过操作指针可以在文件的
        任意位置上对数据进行读取、写入、修改等操作,也可以完成文件的分段录
        入,实际应用:多线程下载。局限性:该类智能操作文件。对文件的读写操
        作主要有两种模式:只读模式(r):不创建文件,会读取一个指定的已存在
        的文件,若文件不存在,则会出现异常;读写模式(rw):要操作的文件不
        存在,会自动创建,存在则不覆盖。

方法:getFilePointer:获取指针位置
          seek:改变指针位置(数据最好有序、有规律)
          skipBytes:跳过指定的字节数
*/

package io;

import java.io.*;
class RandomAccessFile1
{
        public static void main(String[] args) throws IOException
        {
                //write();
                read();
                //RandomAccessFile raf = new RandomAccessFile("Ryan1.txt","r");                //只读模式下无文件会出现异常
        }

        public static void read() throws IOException
        {
                RandomAccessFile raf = new RandomAccessFile("Ryan.txt","r");
                //raf.seek(8*1);                //指针要先于文件读取设置
                raf.skipBytes(8);                //跳过指定的字节数,这能向后跳,不能向前
                byte[] buf = new byte[4];
                raf.read(buf);
                String name = new String(buf);
                int age = raf.readInt();
                sop("name:"+name);
                sop("age="+age);
                raf.close();
        }

        public static void write() throws IOException
        {
                RandomAccessFile raf = new RandomAccessFile("Ryan.txt","rw");
                raf.write("Jack".getBytes());
                raf.writeInt(16);
                raf.write("Ryan".getBytes());
                raf.writeInt(55);
                raf.seek(8*3);
                raf.write("Gill".getBytes());
                raf.writeInt(36);
                raf.close();
        }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2