Java中IO流 RandomAccessFile类实例详解

发布时间 - 2026-01-11 01:07:05    点击率:

Java中IO流 RandomAccessFile类实例详解

RandomAccessFile

  1. java提供的对文件内容的访问,既可以读文件,也可以写文件。
  2. 支持随机访问文件,可以访问文件的任意位置。
  3. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合
  4. 打开文件,有两种模式,“rw”读写、“r”只读;RandomAccessFile raf = new RandomAccessFile(file, "rw");,文件指针,打开文件时指针在开头 point = 0;
  5. 写方法, raf.write()-->只写一个字节(后八位),同时指针指向下一个位置,准备再次写入
  6. 读方法,int b = raf.read()-->读一个字节
  7. 文件读写完成以后一定要关闭(Oracle官方说明)

 RafDemo.java

package com.test.io;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class RafDemo {

  public static void main(String[] args) throws IOException {
    File demo = new File("demo");
    if (!demo.exists()) {
      demo.mkdir();
    }
    File file = new File(demo, "raf.dat");
    if (!file.exists()) {
      file.createNewFile();
    }
    RandomAccessFile raf = new RandomAccessFile(file, "rw");
    System.out.println(raf.getFilePointer());
    
    raf.write('A');//一个char型占两个字节,但是write一次只写入一个字节(A字符的后八位)
    System.out.println(raf.getFilePointer());
    raf.write('B');
    
    int i = 0x7fffffff;
    raf.write(i >>> 24);//写入i的高八位
    raf.write(i >>> 16);
    raf.write(i >> 8);
    raf.write(i);
    System.out.println(raf.getFilePointer());
    //直接写入一个int
    raf.writeInt(i);
    
    String s = "你";
    byte[] b = s.getBytes("utf8");
    raf.write(b);
    System.out.println(raf.length());
    
    //读文件,必须把指针移到头部
    raf.seek(0);
    //一次性读取,把文件中的内容都读到字节数组中
    byte[] buf = new byte[(int) raf.length()];
    raf.read(buf);
    System.out.println(Arrays.toString(buf));
    for (byte c : buf) {
      System.out.print(Integer.toHexString(c & 0xff) + " ");
    }
    //关闭文件
    raf.close();
  }

}

  执行结果:

0
1
6
13
[65, 66, 127, -1, -1, -1, 127, -1, -1, -1, -28, -67, -96]
41 42 7f ff ff ff 7f ff ff ff e4 bd a0 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # IO流  # RandomAccessFile类  # RandomAccessFile类详解  # Java利用File类创建文件的示例代码  # Java文件操作之IO流 File类的使用详解  # Java IO流 File类的常用API实例  # 一起来了解Java的File类和IO流  # 希望能  # 有两种  # 谢谢大家  # 既可  # 移到  # 读到  # 组中  # 只写  # brush  # package  # test  # class  # pre  # RafDemo  # io  # Arrays  # util  # public  # void  # static 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现一对一模型关联?(Eloquent示例)  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何快速搭建高效可靠的建站解决方案?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  如何在万网开始建站?分步指南解析  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  海南网站制作公司有哪些,海口网是哪家的?  动图在线制作网站有哪些,滑动动图图集怎么做?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  利用vue写todolist单页应用  轻松掌握MySQL函数中的last_insert_id()  Laravel如何处理和验证JSON类型的数据库字段  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  如何快速生成可下载的建站源码工具?  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  JavaScript如何实现继承_有哪些常用方法  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在阿里云通过域名搭建网站?  如何在IIS中新建站点并配置端口与物理路径?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  微信小程序 wx.uploadFile无法上传解决办法  Linux系统命令中screen命令详解  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  网易LOFTER官网链接 老福特网页版登录地址  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  网站制作免费,什么网站能看正片电影?  如何在Ubuntu系统下快速搭建WordPress个人网站?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  网站优化排名时,需要考虑哪些问题呢?  iOS UIView常见属性方法小结  如何快速搭建自助建站会员专属系统?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  如何快速搭建FTP站点实现文件共享?  如何在IIS中配置站点IP、端口及主机头?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何在建站之星绑定自定义域名?  大同网页,大同瑞慈医院官网?  微信小程序 HTTPS报错整理常见问题及解决方案  敲碗10年!Mac系列传将迎来「触控与联网」双革新  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法