文章目录
介绍
RandomAccessFile 使用
创建对象
写方法
读取方法
介绍
java.io.RandomAccessFile
1、读写文件的工具
2、将文件中的字节数据,当作数组,用下标访问指定位置的字节值
RandomAccessFile 既可以读取文件内容,也可以向文件输出数据。同时,RandomAccessFile 支持“随机访问”的方式,程序快可以直接跳转到文件的任意地方来读写数据。
由于 RandomAccessFile 可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,而不是把文件从头读到尾,使用 RandomAccessFile 将是更好的选择。
RandomAccessFile 允许自由定义文件记录指针,RandomAccessFile 可以不从开始的地方开始输出,因此 RandomAccessFile 可以向已存在的文件后追加内容。如果程序需要向已存在的文件后追加内容,则应该使用 RandomAccessFile。
RandomAccessFile 的方法虽然多,但它有一个最大的局限,就是只能读写文件,不能读写其他 IO 节点。
RandomAccessFile 的一个重要使用场景就是网络请求中的多线程下载及断点续传。
关于字节
计算机中的所有数据都是由 0、1 组成,每 8 位为 1 个字节,读写数据的时候都是按字节读写的。
每 4 位可以由一个十六进制字符表示,如
10010110 00010101 11111001
96 15 f9
所以每两个十六进制字符就可以表示 1 个字节。
abc 这三个字母在计算机中的存储是这样的:
a 在计算机中存储的十进制值是 97,二进制为 01100001, 十六进制为 61
b 十进制 98,二进制为 01100010,十六进制为 62
c 十进制 99,二进制为 01100011,十六进制为 63
RandomAccessFile 使用
创建对象
RandomAccessFile raf = new RandomAccessFile(文件,r);
RandomAccessFile raf = new RandomAccessFile(文件,rw);
复制代码
这个文件可以是字符串d:/abc
,也可以是封装好的File对象d:/abc
r 为只读,rw 为读写。读文件是输入,读入内存。写文件是输出,都是相对内存来说的。
写方法
write(int b)
int 四个字节中,只输出末尾的一个字节值:[1][2][3][4]->[4]
适用于单字节范围内的值,切掉前边3个不会有数据损失
write(byte[] buff)
输出数组中全部字节值
write(byte[] buff,int from,int length)
输出数组中从 from 开始的 length 个
栗子1:写入练习
public class Main {
public static void main(String[] args) throws Exception {
/*
* 1、如果文件不存在,新建文件
* 2、如果目录不存在,出现异常
*/
RandomAccessFile raf = new RandomAccessFile("d:/abc/