RandomAccessFile 随机读写流

2024-02-22 23:48

本文主要是介绍RandomAccessFile 随机读写流,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.随机读写流的介绍

  • RandomAccessFile-随机读写流,不属于任何流对象,直接继承了Object类,既可读又可写可随机访问读和写
  • 以前学的流对象 读取从文件开头读,写末尾追加或开头覆盖
  • RandomAccessFile在文件任意位置上开始读和写,隐含了大型字节数组,文件都是由字节组成,文件二进制都放在自己的数组中
  • 有一种游标或索引到隐含数组中,称为文件指针
  • 输入操作从文件指针开始读取字节,并使文件指针超过读取的字节数。 如果在读/写模式下创建随机访问文件,则输出操作也可用;
  • 输出操作从文件指针开始写入字节,并使文件指针超过写入的字节。 写入隐含数组当前末尾的输出操作会导致数组被扩展。 文件指针可以通过读取-getFilePointer方法和设置-seek方法。
  • seek(long l) 设置开始的指针
  • rw.skipBytes() 跳过字节数,调用了seek方法
  • 构造器:
  • 1)RandomAccessFile(File file, String mode)
  • 创建一个随机访问文件流读,随意写来,由 File参数指定的文件。
  • 2)RandomAccessFile(String name, String mode)
  • 创建一个随机访问文件流,并可选择地写入到具有指定名称的文件中。
  • 模式:r 只读 如果写会抛异常
  • 模式:rw 可读可写
  • 常应用于多线程下载大文件

二.代码案例

package InputOutput;import java.io.IOException;
import java.io.RandomAccessFile;/*** @author sunyong* @date 2020/07/26* @description 随机读写流*/
public class RandomDemo {/** 随机读写流,写数据* 有规律数据: 张三 65 李四 66 王五 67* 王五写在李四前面 李四字节数 9-16 王五在9字节上* seek 移动文件指针,将王五移动到9字节上 seek(8)* 李四应该在17字节上 seek(16)*/public static void write() throws IOException {//创建随机读写流对象 rw模式RandomAccessFile rw = new RandomAccessFile("random.txt", "rw");rw.write("张三".getBytes());rw.write(65);//设置李四指针为16+1rw.seek(16);rw.write("李四".getBytes());rw.write(66);//移动文件指针设置王五指针为8+1rw.seek(8);rw.write("王五".getBytes());rw.write(67);rw.close();}/*** 随机读写流 读文件* 指定字节数进行读取* 如果读取的是有规律的文件,使用循环读取* 停下循环-->捕获EOF异常*/public static void read() throws IOException {//创建随机读写流对象 rw模式RandomAccessFile rw = new RandomAccessFile("random.txt", "rw");while(true) {try {//名字是四个字节byte[] bytes = new byte[4];int len = rw.read(bytes);System.out.println(new String(bytes));//年龄是整形int age = rw.readInt();System.out.println(age);}catch (Exception e){break;}rw.close();}}public static void main(String[] args) throws IOException {read();}
}

这篇关于RandomAccessFile 随机读写流的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736884

相关文章

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

ShardingSphere之读写分离方式

《ShardingSphere之读写分离方式》:本文主要介绍ShardingSphere之读写分离方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录ShardingSphere-读写分离读写分离mysql主从集群创建 user 表主节点执行见表语句项目代码读写分

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1