java的IO操作之--RandomAccessFile
目标:
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相关推荐
- Java之IO操作总结
所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 ...
- java判断所有域名后缀_使用Java的IO操作,提取全世界所有的三位域名后缀
一. 前言 最近又想注册域名,便从TLD List 中下载了已经收录的全世界所有的域名后缀,然后使用Java的IO相关操作,将所有的三位域名后缀提取了出来.先给出下载文件: 所有域名后缀 二. 代 ...
- Java 文件 IO 操作
文章目录 1. File类 2. RandomAccessFile类 3. 流类 3.1 字节流 3.2 字符流 3.3 管道流 3.4 ByteArrayInputStream.ByteArrayO ...
- Java的IO操作(五) - PrintStream类、字符流、Reader和Writer、带缓冲的字符流BufferedReader和BufferedWriter...
1. PrintStream类 我们都知道,int类型在Java中占4个字节,如1在内存中表示为 00000000 00000000 00000000 00000001.如果我们直接使用OutputS ...
- Java文件IO操作应该抛弃File拥抱Paths和Files
Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令...
在上一节中,我们使用FileInputStream类和FileOutputStream类来实现了一个可以自由拷贝文件的功能.为了提高效率,我们人为地定义一个缓冲区byte[] 数组.其实,我们可以使用 ...
- java 文件io操作_java文件IO操作。
public static void main(String[] args) { String filename = "F:/zhangming_test/test.txt"; S ...
- java安全编码指南之:文件IO操作
文章目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStre ...
- [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)
JAVA IO操作目标 本季知识点 1.File类 2.RandomAccessFile类 File类 在JAVA中所有的IO操作全部存放在java.io包中. File是唯一一个与文件本身有关的操作 ...
- java io操作_Java IO 操作
IO操作 Java对数据的操作都是通过流的方式,IO流用来处理设备之间的数据传输,文件上传和文件下载,Java用于操作流的对象都在IO包,NIO(New IO)包中. 创建文件 Java创建文件的方式 ...
最新文章
- 大数据实战之环境搭建(八)
- 厉害了,在Pandas中用SQL来查询数据,效率超高
- SlickOne 敏捷开发框架介绍(二) -- 多用户/多租户/SAAS软件基础框架实现
- 第18次csp认证 201912-2 回收站选址(C++)
- 【转】eclipse中egit插件使用
- python中二进制表示_Python中的二进制搜索:直观介绍
- Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存
- 人脸识别+检索项目记录
- 主题词是计算机自动提取,汉语关键词自动转换主题词方法的步骤
- html 在线测试 鱼缸,新做的草缸教程,看1遍你也会做,鱼缸造景其实很简单
- 计算机丢失GetU,u盘启动引导文件丢失如何修复
- 数学建模学习记录——数学规划模型
- 直接调节风扇转速的Windows开源工具--Open Hardware Monitor
- 移动硬盘如何分区?分区软件推荐:
- 稳压二极管、肖特基二极管、ESD静电保护二极管、TVS瞬态抑制保护管
- POJ 3470 Walls 已翻译
- python爬虫实现实时爬取学校最新通知并推送
- 操作系统期末考试简答题汇总(全、附带答案)
- 89c51c语言程序,89C51单片机计算器C语言程序.doc
- Java 实例-打印图形