Java基础(二十八)Java IO(5)RandomAccessFile类与过滤器流(Filter Stream)
一、RandomAccessFile类
使用RandomAccessFile类可以读取任意位置数据的文件。
1.构造方法
- RandomAccessFile(String name, String mode)
- RandomAccessFile(File file, String mode)
其中“mode”表示:r(只读)、rw(可读写)、rws(同步写入)、rwd(更新同步写入)
2.常用方法

3.示例代码
package jun.iplab.RandomAccessFile;
import java.io.*;
public class RandomAccessFileTest {
public static void main(String[] args) {
int[] bytes = {1,2,3,4,5};
try {
RandomAccessFile raf = new RandomAccessFile("D:\\JavaIOTest\\RandomAccessFileTest.txt", "rw");
// 按照顺序将数据写入文件中
for (int i = 0; i < bytes.length; i++) {
raf.writeInt(bytes[i]);
}
// 按照倒序读出数据
for (int i = bytes.length - 1; i >= 0; i--) {
// 由于int型数据占4个字节,因此文件指针位置需要乘以4
raf.seek(i*4);
// 从文件中读出数据并输出到控制台
System.out.println(raf.readInt());
}
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
5
4
3
2
1
二、读写二进制数据
过滤器流是为某种目的过滤字节或字符的数据流。
基本的输入流提供的读取方法,只能用来读取字节或字符。而过滤器流能够读取整数值、双精度值或字符串,但需要一个过滤器类来包装输入流。
DataInputStream和DataOutputStream类分别是FilterInputStream和FileOutputStream类的子类。它们分别实现了DataInput和DataOutput接口,该接口中定义了独立于具体机器的带有格式的读写操作,从而可以实现对Java中的不同基本类型的读写。
DataOutput接口定义了用于以二进制形式写数组、字符、Boolean值和字符串的各种方法。
DataInput接口定义了读取二进制形式数据的各种方法。
例如:
为了从文件中读入二进制数据,可以将DataInputStream与某个字节源相结合,例如FileInputStream:
DataInputStream dis = new DataInputStream(new FIleInputStream("employee.dat"));
与此类似,要想写出二进制数据,可以使用DataOutputStream类:
DataOutputStream dos = new DataOutputStream(new FIleOutputStream("employee.dat"));
Java基础(二十八)Java IO(5)RandomAccessFile类与过滤器流(Filter Stream)的更多相关文章
- java基础(十八)IO流(一)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- Bootstrap <基础二十八>列表组
列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- java基础第十八篇之单元测试、注解和动态代理
1:单元测试 1)JUnit是一个Java语言的单元测试框架,这里的单元指的就是方法 2)单元测试用来替换以前的main方法 1.1 Junit测试的步骤 1:在方法的上面加上 @Test 2:将ju ...
- 菜鸡的Java笔记 第二十八 - java 包的定义
包的主要作用以及定义 包的导入操作 系统常见的开发包 jar 程序命令 包的定义 在任何的操作系统之中都有一个统一的共识:同一个目录下不能够存在有相同的文 ...
- Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题
PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 ...
- java基础(十九)IO流(二)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- 夯实Java基础(二十五)——JDBC使用详解
1.JDBC介绍 JDBC的全称是Java Data Base Connectivity(Java数据库连接).是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问(例如MyS ...
随机推荐
- Guava的常用方法示例
Guava Maven Dependency <dependency> <groupId>com.google.guava</groupId> <artifa ...
- Redis连接池-Java代码
1.JedisUtil类 2.测试类 3.测试日志(模拟出现竞争情况) import org.apache.log4j.Logger; import redis.clients.jedis.Jedis ...
- Vsftp服务-实战案例
Vsftp 实验案例一:(本地用户) 试验版本:Linux7.X版本 公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文 件.创建目录.更新网页等等.公司 ...
- java进阶文章优选链接,面试干货集合
Java多线程: java多线程详细总结:https://blog.csdn.net/chenruijia170707/article/details/78505351 ThreadLocal 用法及 ...
- Ajax async属性
async: 默认是true:异步,false:同步. 其他属性扩展: 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数, ...
- 利用threading模块开线程
一多线程的概念介绍 threading模块介绍 threading模块和multiprocessing模块在使用层面,有很大的相似性. 二.开启多线程的两种方式 1.创建线程的开销比创建进程的开销小, ...
- Nullable Reference Types 可空引用类型
在写C#代码的时候,你可能经常会遇到这个错误: 但如果想避免NullReferenceException的发生,确实需要做很多麻烦的工作. 可空引用类型 Null Reference Type 所以, ...
- 04、JDBC范例
范例:JDBC查询 package com.hsp; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...
- IoC 之加载 Bean:总结
上文中我们将bean已经加载到了IOC容器中,接下来我们将把IOC加载Bean出来进行代码解析 备注:(有些解释是参考别个博客的相关解释 )一起探讨请加我QQ:1051980588 bean 的初始化 ...
- url设计规范
一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角 ...