Java RandomAccessFile 指定位置实现文件读取与写入

RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,可以在文件的指定位置的读取和写入内容,这在很多时候都是很方便的。
RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。
RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和 DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用InputStream和OutputStream类中已经存在的任何功能;它是一个完全独立的类,所有方法(绝大多数都只属于它自己)都是从零开始写的。这可能是因为RandomAccessFile能在文件里面前后移动,所以它的行为与其它的I/O类有些根本性的不同。总而言之,它是一个直接继承Object的,独立的类。
基本上,RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream结合起来,再加上它自己的一些方法,比如定位用的getFilePointer( ),在文件里移动用的seek( ),以及判断文件大小的length( )、skipBytes()跳过多少字节数。此外,它的构造函数还要一个表示以只读方式("r"),还是以读写方式("rw")打开文件的参数 (和C的fopen( )一模一样)。它不支持只写文件。
只有RandomAccessFile才有seek搜寻方法,而这个方法也只适用于文件。BufferedInputStream有一个mark( )方法,你可以用它来设定标记(把结果保存在一个内部变量里),然后再调用reset( )返回这个位置,但是它的功能太弱了,而且也不怎么实用。
实例代码:
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,就是说可以指定位置
* 的读取和写入内容
* @author andy
*
*/
public class RandomAccessFileTest {
public static void main(String args[]) throws IOException {
write();
read();
}
public static void write() throws IOException {
//以读写的方式来访问该文件
RandomAccessFile raf = new RandomAccessFile("D:\\test.txt", "rw");
raf.writeBytes("Hello World!");
raf.writeBoolean(true);
raf.writeInt(30);
raf.writeDouble(3.56);
raf.close();
}
public static void read() throws IOException {
RandomAccessFile raf = new RandomAccessFile("D:\\test.txt", "r");
raf.seek(12);//设置指针的位置
boolean booleanValue = raf.readBoolean();
int intValue = raf.readInt();
double doubleValue = raf.readDouble();
raf.seek(0);//设置指针的位置为文件的开始部分
byte[] bytes = new byte[12];
for (int i=0; i<bytes.length; i++)
bytes[i] = raf.readByte();//每次读一个字节,并把它赋值给字节bytes[i]
String stringValue = new String(bytes);
raf.skipBytes(1);//指针跳过一个字节
int intValue2 = raf.readInt();
raf.close();
System.out.println(booleanValue);
System.out.println(intValue);
System.out.println(doubleValue);
System.out.println(stringValue);
System.out.println(intValue2);
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Java
# RandomAccessFile
# 实现问题读取与写入
# 指定位置读取
# Java基于反射机制实现全部注解获取的方法示例
# Java使用反射来获取泛型信息示例
# Java实现文件读取和写入过程解析
# Java中的字节流文件读取教程(一)
# Java中IO流文件读取、写入和复制的实例
# Java利用反射实现文件的读取操作
# 都是
# 可以用
# 它是
# 这两个
# 以对
# 跳过
# 自己的
# 也不
# 是因为
# 你就
# 来访问
# 毫不相干
# 适用于
# 把它
# 能在
# 再加上
# 希望能
# 才有
# 然后再
# 在一
相关文章:
如何获取上海专业网站定制建站电话?
*服务器网站为何频现安全漏洞?
,柠檬视频怎样兑换vip?
自助网站制作软件,个人如何自助建网站?
如何通过FTP服务器快速搭建网站?
如何做静态网页,sublimetext3.0制作静态网页?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
建站主机助手选型指南:2025年热门推荐与高效部署技巧
5种Android数据存储方式汇总
如何确保西部建站助手FTP传输的安全性?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何在阿里云购买域名并搭建网站?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何快速查询网址的建站时间与历史轨迹?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何在云服务器上快速搭建个人网站?
如何配置FTP站点权限与安全设置?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何使用Golang安装API文档生成工具_快速生成接口文档
宝塔面板如何快速创建新站点?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
常州企业网站制作公司,全国继续教育网怎么登录?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何通过山东自助建站平台快速注册域名?
如何在景安服务器上快速搭建个人网站?
如何在搬瓦工VPS快速搭建网站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何在阿里云服务器自主搭建网站?
建站10G流量真的够用吗?如何应对访问高峰?
如何通过可视化优化提升建站效果?
制作网站的公司有哪些,做一个公司网站要多少钱?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
已有域名和空间,如何快速搭建网站?
Android自定义控件实现温度旋转按钮效果
网站制作服务平台,有什么网站可以发布本地服务信息?
公司门户网站制作流程,华为官网怎么做?
宝塔建站无法访问?如何排查配置与端口问题?
建站之星代理商如何保障技术支持与售后服务?
网站专业制作公司有哪些,做一个公司网站要多少钱?
专业网站建设制作报价,网页设计制作要考什么证?
,网页ppt怎么弄成自己的ppt?
建站之星如何开启自定义404页面避免用户流失?
建站之星代理平台如何选择最佳方案?
如何通过FTP空间快速搭建安全高效网站?
如何在局域网内绑定自建网站域名?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
C#如何序列化对象为XML XmlSerializer用法
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何快速重置建站主机并恢复默认配置?
网站制作壁纸教程视频,电脑壁纸网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。