目标:

  1)掌握RandomAccessFile类的作用。

  2)用RandomAccessFile读取指定位置的数据。

具体内容

  RandomAccessFile类的主要功能是完成随机读取功能,可以读取指定范围的内容。

  假设文件中存储了以下三个数据:

  因为文件中所有内容都是按照字节存储的,都有固定的保存位置。

  构造方法:

public RandomAccessFile(File file,String mode) throws FileNotFoundException

  实例化此类需要传递File类,告诉程序应该操作哪个文件。之后有一个模式,文件的打开模式,

  常用的两种模式:

  1) r:读模式

  2)w:写模式

  3)rw:读写模式,如果使用此模式,如果文件不存在,则会自动创建

package Thread1;
import java.io.File ;
import java.io.RandomAccessFile ;
public class demo1{// 所有的异常直接抛出,程序中不再进行处理public static void main(String args[]) throws Exception{    //在主方法处使用throws抛出异常给JVM处理,节省了很多异常处理操作File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的文件RandomAccessFile rdf = null ;        // 声明RandomAccessFile类的对象 rdf = new RandomAccessFile(f,"rw") ;// 读写模式,如果文件不存在,会自动创建String name = null ;int age = 0 ;name = "zhangsan" ;            // 字符串长度为8age = 30 ;                    // 数字的长度为4 rdf.writeBytes(name) ;        // 将姓名写入文件之中rdf.writeInt(age) ;            // 将年龄写入文件之中name = "lisi    " ;            // 字符串长度为8age = 31 ;                    // 数字的长度为4 rdf.writeBytes(name) ;        // 将姓名写入文件之中rdf.writeInt(age) ;            // 将年龄写入文件之中name = "wangwu  " ;            // 字符串长度为8age = 32 ;                    // 数字的长度为4 rdf.writeBytes(name) ;        // 将姓名写入文件之中rdf.writeInt(age) ;            // 将年龄写入文件之中 rdf.close() ;                // 关闭
    }
};

  写入的方法:writeBytes(String str);writeInt(int a);

  运行结果:

  以上完成了写入的操作。每条数据都是12位。

  写完开始读取数据。写的时候,可以将一个字符串写入(writeBytes(String str)),读的时候, 需要一个个以字节读取出来(readByte())。

  跳过几个字节的方法:skipBytes(n),向前几个字节的方法:seek(0),数组与字符串转换的方法:String str=new String(char b[])。

import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo02{// 所有的异常直接抛出,程序中不再进行处理public static void main(String args[]) throws Exception{File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的文件RandomAccessFile rdf = null ;        // 声明RandomAccessFile类的对象rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件String name = null ;int age = 0 ;byte b[] = new byte[8] ;    // 开辟byte数组// 读取第二个人的信息,意味着要空出第一个人的信息 rdf.skipBytes(12) ;        // 跳过第一个人的信息for(int i=0;i<b.length;i++){b[i] = rdf.readByte() ;    // 读取一个字节
        }name = new String(b) ;    // 将读取出来的byte数组变为字符串,这里把数组放到string对象中变成String字符串。  age = rdf.readInt() ;    // 读取数字    //readInt()读取的大小恰好是4个字节,读取前面8个字符串后面的几个数字。System.out.println("第二个人的信息 --> 姓名:" + name + ";年龄:" + age) ;// 读取第一个人的信息rdf.seek(0) ;    // 指针回到文件的开头for(int i=0;i<b.length;i++){b[i] = rdf.readByte() ;    // 读取一个字节
        }name = new String(b) ;    // 将读取出来的byte数组变为字符串age = rdf.readInt() ;    // 读取数字System.out.println("第一个人的信息 --> 姓名:" + name + ";年龄:" + age) ;rdf.skipBytes(12) ;    // 空出第二个人的信息for(int i=0;i<b.length;i++){b[i] = rdf.readByte() ;    // 读取一个字节
        }name = new String(b) ;    // 将读取出来的byte数组变为字符串age = rdf.readInt() ;    // 读取数字System.out.println("第三个人的信息 --> 姓名:" + name + ";年龄:" + age) ;rdf.close() ;                // 关闭
    }
};

  运行结果:

第二个人的信息 --> 姓名:lisi    ;年龄:31
第一个人的信息 --> 姓名:zhangsan;年龄:30
第三个人的信息 --> 姓名:wangwu  ;年龄:32

  如果要完成文件内容操作,可以使用RoundomAccessFile()完成。

转载于:https://www.cnblogs.com/alsf/p/5747254.html

java的IO操作之--RandomAccessFile相关推荐

  1. Java之IO操作总结

    所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 ...

  2. java判断所有域名后缀_使用Java的IO操作,提取全世界所有的三位域名后缀

    一.  前言 最近又想注册域名,便从TLD List 中下载了已经收录的全世界所有的域名后缀,然后使用Java的IO相关操作,将所有的三位域名后缀提取了出来.先给出下载文件: 所有域名后缀 二.  代 ...

  3. Java 文件 IO 操作

    文章目录 1. File类 2. RandomAccessFile类 3. 流类 3.1 字节流 3.2 字符流 3.3 管道流 3.4 ByteArrayInputStream.ByteArrayO ...

  4. Java的IO操作(五) - PrintStream类、字符流、Reader和Writer、带缓冲的字符流BufferedReader和BufferedWriter...

    1. PrintStream类 我们都知道,int类型在Java中占4个字节,如1在内存中表示为 00000000 00000000 00000000 00000001.如果我们直接使用OutputS ...

  5. Java文件IO操作应该抛弃File拥抱Paths和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

  6. Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令...

    在上一节中,我们使用FileInputStream类和FileOutputStream类来实现了一个可以自由拷贝文件的功能.为了提高效率,我们人为地定义一个缓冲区byte[] 数组.其实,我们可以使用 ...

  7. java 文件io操作_java文件IO操作。

    public static void main(String[] args) { String filename = "F:/zhangming_test/test.txt"; S ...

  8. java安全编码指南之:文件IO操作

    文章目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStre ...

  9. [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)

    JAVA IO操作目标 本季知识点 1.File类 2.RandomAccessFile类 File类 在JAVA中所有的IO操作全部存放在java.io包中. File是唯一一个与文件本身有关的操作 ...

  10. java io操作_Java IO 操作

    IO操作 Java对数据的操作都是通过流的方式,IO流用来处理设备之间的数据传输,文件上传和文件下载,Java用于操作流的对象都在IO包,NIO(New IO)包中. 创建文件 Java创建文件的方式 ...

最新文章

  1. 大数据实战之环境搭建(八)
  2. 厉害了,在Pandas中用SQL来查询数据,效率超高
  3. SlickOne 敏捷开发框架介绍(二) -- 多用户/多租户/SAAS软件基础框架实现
  4. 第18次csp认证 201912-2 回收站选址(C++)
  5. 【转】eclipse中egit插件使用
  6. python中二进制表示_Python中的二进制搜索:直观介绍
  7. Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存
  8. 人脸识别+检索项目记录
  9. 主题词是计算机自动提取,汉语关键词自动转换主题词方法的步骤
  10. html 在线测试 鱼缸,新做的草缸教程,看1遍你也会做,鱼缸造景其实很简单
  11. 计算机丢失GetU,u盘启动引导文件丢失如何修复
  12. 数学建模学习记录——数学规划模型
  13. 直接调节风扇转速的Windows开源工具--Open Hardware Monitor
  14. 移动硬盘如何分区?分区软件推荐:
  15. 稳压二极管、肖特基二极管、ESD静电保护二极管、TVS瞬态抑制保护管
  16. POJ 3470 Walls 已翻译
  17. python爬虫实现实时爬取学校最新通知并推送
  18. 操作系统期末考试简答题汇总(全、附带答案)
  19. 89c51c语言程序,89C51单片机计算器C语言程序.doc
  20. Java 实例-打印图形

热门文章

  1. Ubuntu系统 -- 初始化配置与基础操作
  2. 一个小故事读懂Memcached漏洞
  3. 教你chrome浏览器断点调试理解闭包
  4. Redis-慢查询分析
  5. [Zeppelin]Zeppelin安装与初体验
  6. ORACLE数据泵还原(IMPDP命令)【转】
  7. Java集合---HashMap源码剖析
  8. 安卓平台病毒猖獗 日感染15000台
  9. 超实用的JavaScript技巧及最佳实践(下)
  10. 使用delphi 开发多层应用(十四)使用Basic4android 显示kbmMW server数据