RandomAccessFile类实现随机读写文件

简介:
 java.io.RandomAccessFile类能够实现对文件内的随机位置进行读写操作。通过下面的一个实例来进行了解。
实例:
public class RandomAccessFileDemo03 {
public static void main(String[] args) throws IOException{
File f1=new File("e:"+File.separator+"ioString.dat");
RandomAccessFile raf=new RandomAccessFile(f1,"rw");//没有则创建
String name=null;//姓名
int age=0;//年龄
String phoneNumber=null;//电话号码
//每个人的信息用26个字节来储存
name="tangtianyun";//姓名占11个字节,不足11字节用空格补足
age=22;//int型的年龄占4个字节
phoneNumber="05718839476";//电话号码占11字节,不足11字节用空格补足
raf.writeBytes(name);
raf.writeInt(age);
raf.writeBytes(phoneNumber);
name="heyili     ";
age=23;
phoneNumber="13527971631";
raf.writeBytes(name);
raf.writeInt(age);
//raf.writeBytes(phoneNumber);//这种方式比较简便,下面的方式会复杂些。
byte[] b=phoneNumber.getBytes();//通过字符串返回byte数组
for(int i=0;i<b.length;i++){
raf.writeByte(b[i]);
}
raf.close();//写入操作完成。文件必须关闭。
//下面进行读取操作
File f2=new File("e:"+File.separator+"ioString.dat");
RandomAccessFile raf2=new RandomAccessFile(f2,"r");//r表示模式为读
String readName=null;
int readAge=0;
String readPhoneNumber=null;
//假设先读取第2个人的信息
raf2.skipBytes(1*26);//跳过26个字节,即跳过第1个人的信息
byte[] bName=new byte[11];
for(int i=0;i<11;i++){
//每次读取1个字节,循环11次将储存的名字信息放入byte数组
bName[i]=raf2.readByte();
}
readName=new String(bName);//将byte数组新构造一个String字符串
readAge=raf2.readInt();//每次读取4个字节的int数据
byte[] bPhoneNumber=new byte[11];
for(int i=0;i<11;i++){
bPhoneNumber[i]=raf2.readByte();
}
readPhoneNumber=new String(bPhoneNumber);
System.out.println("姓名:"+readName+",年龄:"+readAge+",电话号码:"+readPhoneNumber);
//假设再读取第1个人的信息
raf2.seek(0);//文件指针回到第1个字节前
bName=new byte[11];
for(int i=0;i<11;i++){
bName[i]=raf2.readByte();
}
readName=new String(bName);
readAge=raf2.readInt();
bPhoneNumber=new byte[11];
for(int i=0;i<11;i++){
bPhoneNumber[i]=raf2.readByte();
}
readPhoneNumber=new String(bPhoneNumber);
System.out.println("姓名:"+readName+",年龄:"+readAge+",电话号码:"+readPhoneNumber);
raf2.close();
}
}
使用RandomAccessFile进行文件的随机读写操作,必须要规划好每个内容储存所需要的字节数,因此比较麻烦。也正是因为这样的原因,才是它拥有了随机读写的特性。这说明 付出总有回报
相关文章
|
17天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
9天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
12天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
1051 34
|
11天前
|
机器学习/深度学习 人工智能 搜索推荐
万字长文深度解析最新Deep Research技术:前沿架构、核心技术与未来展望
近期发生了什么自 2025 年 2 月 OpenAI 正式发布Deep Research以来,深度研究/深度搜索(Deep Research / Deep Search)正在成为信息检索与知识工作的全新范式:系统以多步推理驱动大规模联网检索、跨源证据。
814 56
|
9天前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
706 11