在Java项目中使用RandomAccessFile类如何实现操作文件

  介绍

本篇文章给大家分享的是有关在Java项目中使用RandomAccessFile类如何实现操作文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强> 1。RandomAccessFile类简介

RandomAccessFile是Java提供用来访问一些保存数据记录的文件的类,可以进行读取操作,也可以进行写入操作,写入的数据则以字节的形式存储;支持随机访问,也就是可以访问文件的任意位置(通过文件指针实现)。

<强> 2。构造函数

 RandomAccessFile(字符串名称,字符串模式)
  RandomAccessFile(文件文件、字符串模式)

两个构造函数用法非常相似,名称,文件都是用于指定打开的文件路径和名称,模式则是指定打开文件的方式,常用的参数有两个“r"和“rw",也就是只读和读写。

文件打开后,文件指针指向文件最开始,也就是指针=0,可通过RandomAccessFile了的getFilePointer()方法查看。

<强>范例:强创建并打开一个数据文件。

//创建目录   文件dir=新文件(“demo");   如果(! dir.exists ()) {   dir.mkdir ();   }//创建文件   文件文件=新文件(dir,“test.dat");   如果(! file.exists ()) {   file.createNewFile ();   }//实例化RandomAccessFile对象   RandomAccessFile raf=新RandomAccessFile(文件,“rw");//打开文件时指针位置在最前,即0   System.out.println (raf.getFilePointer ());

<强> 3。写入操作

写(int i)
  写(byte [] b)
  写(byte [] b, int, int len) 

第三个方法中从为的数b组中需要写入的数据的起始索引值,len则是要写入的长度.write方法每次写入一个字节,如果写入的数据超过一个字节,则写入后八位(如果这里不太理解,可看看:二进制运算基础)。

另外,每写入一个字节,文件指针指向下一个字节。

<强>范例:强通过写()方法向文件中写入一个整型数。(沿用上面例子创建的对象)

//写()方法每次只插入一个字节,大于一个字节的则写入后八位,因此写入一个整型数需要写入四次   int num=28;   英国皇家空军。写(num祝辞祝辞祝辞24);   英国皇家空军。写(num祝辞祝辞祝辞16);   英国皇家空军。写(num祝辞祝辞祝辞8);   raf.write (num);

当然,RandomAccessFile类也提供了更简便的方法writeXxx(),如果插入一个整型,可直接writeInt (i);,布尔的则为writeBoolean(),以此类推。但是要清楚的是,这些方法的还是通过上面的写()方法实现的。

<强>范例:以下为RandomAccessFile类中writeInt()方法的方法体。

公共最终无效writeInt (int v)抛出IOException {
  写(v祝辞祝辞祝辞24),xFF);
  写(v祝辞祝辞祝辞16),xFF);
  写(v祝辞祝辞祝辞8),xFF);
  写(v祝辞祝辞祝辞0),xFF);//写+=4;
  }

<>强4。读取操作

//读取文件,在读取前需要通过寻求()方法把文件指针移到最前
  raf.seek (0);
  for (int i=0;我* 4 & lt;raf.length ();我+ +){
  System.out.println (raf.readInt ());
  }

<强> 5。关闭文件

打开的文件一定要通过近()关闭,否则可能会出现不可预料的错误。

<强> 6。完整例子

进口java.io.File;
  进口java.io.IOException;
  进口java.io.RandomAccessFile;
  
  公开课MyRandomAccessFile {
  
  公共静态void main (String [] args)抛出IOException {//创建目录
  文件dir=新文件(“demo");
  如果(! dir.exists ()) {
  dir.mkdir ();
  }//创建文件
  文件文件=新文件(dir,“test.dat");
  如果(! file.exists ()) {
  file.createNewFile ();
  }//实例化RandomAccessFile对象
  RandomAccessFile raf=新RandomAccessFile(文件,“rw");//打开文件时指针位置在最前,即0
  System.out.println (raf.getFilePointer ());//写入数据
  int [] num={98年56 28日,14日,23日};
  for (int i: num) {
  raf.writeInt(我);
  }//读取文件,在读取前需要通过寻求()方法把文件指针移到最前
  raf.seek (0);
  for (int i=0;我* 4 & lt;raf.length ();我+ +){
  System.out.println (raf.readInt ());
  }//操作结束后一定要关闭文件
  raf.close ();
  }
  }

在Java项目中使用RandomAccessFile类如何实现操作文件