RandomAccessFile的理解

原创 2016年08月29日 11:36:33

1. RandomAccessFile的概念和作用

RandomAccessFile的直接父类是Java.lang.Object,用来访问那些保存数据记录的文件。它最大的特别之处就是支持任意访问的方式,程序可以直接跳到任意地方来读写数据。如果我们只希望访问文件的部分内容,而不是把文件从头读到尾,使用RandomAccessFile将会带来更简洁的代码以及更好的性能。它的构造函数需要提供一个表示以只读方式(“r”),还是以读写方式(“rw”)打开文件的参数。它不支持只写文件。

2. RandomAccessFile的构造方法

1) RandomAccessFile(File file, String mode)

        File file = newFile("D:"+File.separator+"TestRAF"+
File.separator+"lgy.txt");
        try {
            byte[]  buff=new byte[1024]; 
            int c ;
            RandomAccessFile raf = new RandomAccessFile(file, "r");
            while ((c=raf.read(buff))!=-1) {
                System.out.println(new String(buff,0,c));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

2) RandomAccessFile(String name, String mode)

        try {
            byte[]  buff=new byte[1024]; 
            int c ;
            RandomAccessFile raf = new RandomAccessFile("D:"+
File.separator+"TestRAF"+File.separator+"lgy.txt", "r");
            while ((c=raf.read(buff))!=-1) {
                System.out.println(new String(buff,0,c));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

3. RandomAccessFile的方法

1) public long getFilePointer() 返回文件记录指针的当前位置
2) public void seek(long pos) 将文件记录指针定位到pos的位置
3) public long length() 返回文件的大小

4. RandomAccessFile使用例子

1) 读取文件的一部分内容

    //文件的内容是:lgy1lgy2lgy3,要读取lgy2
    try {
        byte[]  buff=new byte[64]; 
        RandomAccessFile raf = new RandomAccessFile("D:"+File.separator+"TestRAF"+File.separator+"lgy.txt", "r");
        raf.seek(4);
        while (raf.read(buff)!=-1) {
            System.out.println(new String(buff,0,4));
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

2) 向文件末尾追加内容

    //文件的内容是:lgy1lgy2lgy3,在末尾追加lgy4
    try {
        RandomAccessFile raf = new RandomAccessFile("D:"+File.separator+"TestRAF"+File.separator+"lgy.txt", "rw");
        raf.seek(raf.length());
        raf.write("lgy4".getBytes());
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

RandomAccessFile类主要方法和构造函数.txt

RandomAccessFile类具备了文件操作的功能。(重要)构造函数RandomAccessFile(File file,String mode)RandomAccessFile)String n...
  • flycatcq
  • flycatcq
  • 2004年06月26日 01:23
  • 1660

关于File和RandomAccessFile的总结

个人学习总结: 关于File类 File file = new File(…); 这里的file 表示的是一个文件或者一个目录,创建时里面是一个抽象的路径,尽量使用相对路径来创建这样一个file...
  • lany1988
  • lany1988
  • 2016年11月18日 09:11
  • 2302

Java的IO操作(一) - File类,RandomAccessFile类,FileInputStream、FileOutputStream类

在Java中,所有的输入、输出问题都会被抽象成流(Stream)对象来解决。下面介绍一下常用的输入、输出流对象的使用方法。 1、 File类 File类是文件的抽象代表。一个文件(包括目录...
  • tracker_w
  • tracker_w
  • 2013年03月28日 20:28
  • 3634

java中java.io.RandomAccessFile的应用场景及使用实例

应用场景:  1、向10G文件末尾插入指定内容,或者向指定指针位置进行插入或者修改内容。   2、断点续传,使用seek()方法不断的更新下载资源的位置。简介:    Java中的RandomAcc...
  • qq496013218
  • qq496013218
  • 2017年04月06日 17:19
  • 967

案例 1-7: 利用 RandomAccessFile 向文件追加内容

/* * 案例 1-7: 利用 RandomAccessFile 向文件追加内容 * 目标: 掌握 RandomAccessfile 的用法 */import java.io.*;public cla...
  • kanglecjr
  • kanglecjr
  • 2008年03月25日 00:03
  • 1466

在对文件进行随机读写,RandomAccessFile类,如果提高其效率

JAVA的文件随机存取类(RandomAccessFile)的I/O效率较低。通过分析其中原因,提出解决方案。逐步展示如何创建具备缓存读写能力的文件随机存取类,并进行了优化。通过与其它文件访问类的性能...
  • robby_chan
  • robby_chan
  • 2014年07月26日 13:54
  • 2704

使用RandomAccessFile进行文件的复制

RandomAccessFile src = new RandomAccessFile("JAVA_SE.rar","rw"); // 原文件 RandomAccessFile de...
  • u011249702
  • u011249702
  • 2016年03月16日 15:19
  • 243

RandomAccessFile 中的一些坑事,skipBytes 和seek 学习

坑啊!坑啊!坑啊!重要的事说三遍!         最近有空在写一个类似迅雷P2P下载加速的东西,在文件断点续传的方面苦恼了几天,有部分是自己坑自己的= = !。简单来说就是先从服务器下载部...
  • qq_21071767
  • qq_21071767
  • 2015年07月17日 12:47
  • 2394

RandomAccessFile读写文件字符

我本来写了个可以存入信息的地址簿,使用RandomAccessFile类来随机读写.当然可以使用GUI查看.反正说也说不清了.我就直接说下下面的一个测试程序来说明我的问题: Java...
  • dos_186
  • dos_186
  • 2015年08月05日 14:19
  • 760

java基础——IO流及File、RandomAccessFile对象

IO流 用于处理设备上数据。 流:可以理解数据的流动,就是一个数据流。IO流最终要以对象来体现,对象都存在IO包中。 流也进行分类: ①:输入流(读)和输出流(写)。 ②:因...
  • funneies
  • funneies
  • 2013年07月12日 14:21
  • 9799
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RandomAccessFile的理解
举报原因:
原因补充:

(最多只允许输入30个字)