该类可以实现对同一个文件的读写操作,与其他IO流不同的是可以指定读写指针的脚标(seek),有跳过指定个数字节(skipBytes)操作。

另外该类也可用于断点续传。

简单示例如下:

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileDemo {

/**
  * @param args
  * @throws IOException
  */
 public static void main(String[] args) throws IOException {

/*
   * RandomAccessFile
   * 一看这个类名字,纠结。不是io体系中的子类。
   *
   * 特点:
   * 1,该对象即能读,又能写。
   * 2,该对象内部维护了一个byte数组,并通过指针可以操作数组中的元素,
   * 3,可以通过getFilePointer方法获取指针的位置,和通过seek方法设置指针的位置。
   * 4,其实该对象就是将字节输入流和输出流进行了封装。
   * 5,该对象的源或者目的只能是文件。通过构造函数就可以看出。
   *
   *
   */
  
//  writeFile();
//  readFile();
  randomWrite();
 }
 
 public static void randomWrite() throws IOException{
  RandomAccessFile raf = new RandomAccessFile("ranacc.txt", "rw");
  
  //往指定位置写入数据。
  raf.seek(3*8);
  
  raf.write("哈哈".getBytes());
  raf.writeInt(108);
  
  raf.close();
 }
 
 
 public static void readFile() throws IOException {
  
  RandomAccessFile raf = new RandomAccessFile("ranacc.txt", "r");
  
  //通过seek设置指针的位置。
  raf.seek(1*8);//随机的读取。只要指定指针的位置即可。
  
  byte[] buf = new byte[4];
  raf.read(buf);
  
  String name = new String(buf);
  
  int age = raf.readInt();
  
  System.out.println("name="+name);
  System.out.println("age="+age);
  
  System.out.println("pos:"+raf.getFilePointer());
  
  raf.close();
  
  
 }

//使用RandomAccessFile对象写入一些人员信息,比如姓名和年龄。
 public static void writeFile() throws IOException{
  /*
   * 如果文件不存在,则创建,如果文件存在,不创建
   *
   */
  RandomAccessFile raf = new RandomAccessFile("ranacc.txt","rw");
  
  raf.write("张三".getBytes());
  raf.writeInt(97);
  raf.write("小强".getBytes());
  raf.writeInt(99);
//  
  raf.close();
 }

}

java RandomAccessFile类(随机访问文件)的更多相关文章

  1. Java开发笔记(八十七)随机访问文件的读写

    前面介绍了字符流读写文件的两种方式,包括文件字符流和缓存字符流,但是它们的写操作都存在一个问题:不管是write方法还是append方法,都只能从文件开头写入,而不能追加到文件末尾或者在文件中间某个位 ...

  2. Java I/O(三)各种Reader和Writer读写器、RandomAccessFile随机访问文件、序列化

    2019 01/01 八.Reader和Writer读写器 前面讲的输入输出流的基本单位都是字节,因此可以称为“字节流”,读写器是以字符为基本单位,可以称为“字符流”.它们的使用方法非常相似,因此我考 ...

  3. Java I/O---RandomAccessFile类(随机访问文件的读取和写入)

    1.JDK API中RandomAccessFile类的描述 此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引 ...

  4. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  5. Java IO详解(六)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  6. Java IO详解(七)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  7. 18 IO流(十五)——RandomAccessFile随机访问文件及使用它进行大文件切割的方法

    本文部分内容转自:https://blog.csdn.net/nightcurtis/article/details/51384126 1.RandomAccessFile特点 RandomAcces ...

  8. Java随机访问文件

    使用随机访问文件,我们可以从文件读取以及写入文件.使用文件输入和输出流的读取和写入是顺序过程.使用随机访问文件,可以在文件中的任何位置读取或写入.RandomAccessFile类的一个对象可以进行随 ...

  9. Java IO流-随机访问流

    2017-11-05 19:45:51 RandomAccessFile类(随机访问流) RandomAccessFile类:是Object的子类,此类的实例支持对随机访问文件的读取和写入.随机访问文 ...

  10. Java RandomAccessFile类

    RandomAccessFile类是Java中操作文件内容功能最强大的类,既可以读,也可以写. RandomAccessFile支持随机访问,可以直接访问文件的任意位置,在文件的任意位置读写数据.如果 ...

随机推荐

  1. putty的保存功能如何使用

    Putty的设置保存功能隐藏的实在太好了,原来在Connection菜单中修改设置后,并不能在该界面保存. 保存步骤: 1.需要点击Session菜单,选中下面的Default Setting. 2. ...

  2. 如何在JTable中动态添加一行

    JTable tbImage = new JTable(5,5);//create a dummy tableDefaultTableModel dtm=(DefaultTableModel)tbIm ...

  3. word排版汇总

    1.iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf 的文档,而且可以将XML.Html文件转化为PDF ...

  4. (原)用WebBrowser浏览Office Web Apps Server,除去“下载”按钮

    对,没错,如果你按关键字找到这篇随笔了,相信一定知道背景,以及我所说的是什么. 上一段子代码. private void timerHideButton_Tick(object sender, Eve ...

  5. 关于SpringCloud微服务架构概念的一点理解

    目前微服务是非常火的架构或者说概念,也是在构建大型互联网项目时采用的架构方式. 1.单体架构单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用. 假设你正准备开发一款与Ub ...

  6. [2] 立方体(Box)图形的生成算法

    顶点数据的生成 bool YfBuildBoxVertices ( Yreal extentX, Yreal extentY, Yreal extentZ, YeOriginPose originPo ...

  7. libuv之介绍

    本人是在研究linux下socket TCP/IP通讯时,用到了一些linux下的API,比如socket, connect, bind,listen, accept等等,简单写个点对点的通讯,直接用 ...

  8. ItemsControl

    <ItemsControl Grid.Row=" ItemsSource="{Binding Content.patientInfoList}" Width=&qu ...

  9. CentOs中mysql服务器重置root密码方法

    1. 停止mysql: service mysqld stop 2. 编辑/etc/my.cnf,在[mysqld]这行后面加上skip-grant-tables ,并保存 3. 启动mysql: s ...

  10. dev -c++ 快捷键

    转自:http://blog.csdn.net/abcjennifer/article/details/7259222 F8:开始调试 F7:进一步执行当前行,并跳到下一行 F4:添加查看 ctrl ...