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进行文件的随机读写操作,必须要规划好每个内容储存所需要的字节数,因此比较麻烦。也正是因为这样的原因,才是它拥有了随机读写的特性。这说明 付出总有回报
相关文章
|
4天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1120 0
|
13天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3721 4
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
4天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1303 0
|
4天前
|
人工智能 安全 前端开发
刚刚 GPT-6 Astra 发布,全球最强,AGI 时代到来!
OpenAI 正式推出 GPT-6 Astra 模型,带大家看看这次 GPT 有哪些提升,跟 Claude Fable 5.1 有什么差距?AI 编程能力如何?AGI 真的来了么?
605 0
|
10天前
|
人工智能 并行计算 数据可视化
秋叶ComfyUI-AKI最新整合包|完整部署教程+核心指令手册
秋叶ComfyUI-AKI一键整合包,国内适配最优、稳定性最强的商用/学习级版本:全封装虚拟环境、预装90%常用节点、内置绘世启动器与成熟工作流,免配置、零依赖、解压即用,完美兼顾新手入门与专业批量生产需求。(239字)
|
13天前
|
人工智能 Linux iOS开发
Ollama使用教程:Ollama官网下载、Ollama本地部署大模型(2026最新)
Ollama 是一款免费开源的本地大模型运行工具,支持在 Windows/macOS/Linux 上离线运行 Qwen、DeepSeek、Llama 等主流开源模型,数据不出本机、隐私安全。提供 OpenAI 兼容 API,命令行一键拉取/运行/管理模型,无需联网,无调用限制,是开发者与 AI 爱好者部署本地 AI 助手的理想选择。(239 字)