全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。