RandomAccessFile类

RandomAccessFile类
  • RandomAccessFile类,不属于流,但具有读写文件数据的功能,可以随机从文件的任何位置开始执行读写数据的操作
  • RandomAccessFile类可以将文件以指定的操作权限(如只读,只写等)的方式打开,具体使用哪种权限取决于创建它所采用的构造方法

通过两种构造方法创建RandomAccessFile对象,需要接受两个参数:第一个参数指定关联的文件,第二个参数mode指定访问文件的模式(文件的权限)

RandomAccessFile构造方法如下:

RandomAccessFile(File file,String mode)//使用参数file指定被访问的文件,并使用mode来决定指定访问模式
RandomAccessFile(File name,String mode)//使用参数name指定被访问文件的路径,并使用mode来决定指定访问模式

参数mode有四个值:

  1. r:表示以只读方式打开。如果试图对RandomAccessFile对象执行写入操作,会抛出I/OException异常
  2. rw:表示以"读写"方式打开。如果该文件不存在,则会自动创建该文件
  3. rws:表示以"读写"方式打开。与"rw"相比,它要求对文件的内容或者元数据的每个更新都同步写入到底层的存储设备
  4. rwd:表示以**"读写"方式打开。它要求对文件的内容**的每个更新都同步写入到底层的存储设备

RandomAccessFile对象中包含了一个记录指针来标识当前读写处的位置**。顺序读写,指针在开始处为0的位置**,除此之外,可以自由的移动记录指针,既可以向前也可以向后。

RandomAccessFile常用的方法:

int skipBytes(int n)           //使读写指针从当前位置开始,跳过n个字节
void write(byte[] b)           //将指定的字节数组写入到这个文件,并从当前文件指针开始
long getFilePointer()          //返回当前读写指针所处的位置
void seek(long pos)            //设定读写指针的位置,与文件的开头相隔pos个字节数
void setLength(long newLength)    //设置此文件的长度
final String readLine()      //从指定文件当前指针读取下一行内容

seek(long pos)方法可以记录指针向前,向后自由移动

package com.Put;

import java.io.RandomAccessFile;

public class IO {
    public static void main(String[] args) throws Exception{

        //创建RandomAccessFile对象,并指定以读写模式打开time.txt文件
        RandomAccessFile raf = new RandomAccessFile("time.txt","rw");
        //读取还可以使用的次数,第一次读取时times为5
        int times = Integer.parseInt(raf.readLine()) - 1;//通过包装类的parseXxx静态方法将字符串转换为基本数据类型
        //判断剩余次数
        if (times>0){
            //每执行一次代表使用一次,次数就减少一次
            System.out.println("您还可以使用:"+times+"次");
            //将记录指针重新指向文件开头
            raf.seek(0);
            //将剩余次数再次写入文件
            raf.write((times+"").getBytes());
        }else {
            System.out.println("次数已经用完!");
        }

        raf.close();
    }
}

运行结果:

在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等慢慢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值