Java.io.RandomAccessFile
Posted 假寐的我
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java.io.RandomAccessFile相关的知识,希望对你有一定的参考价值。
RandomAccessFile Java提供的对文件内容的访问,既可以读文件,也可以写文件。支持随机访问文件,可以访问文件的任意位置。
1)Java文件模型
在硬盘上的文件是byte byte byte存储的,是数据的集合。
2)打开文件
有两种模式 rw 读写 r 只读。
RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw");
文件指针,打开文件时指针在开头 pointer=0。
3)写方法
randomAccessFile.write(‘赵‘);//只写了一个字节,同时指针指向下一个位置,准备再次写入
4)读方法
int b=randomAccessFile.read(...)读一个字节
5)文件读写完成后一定要关闭(Oracle官方说明)
package com.zhao.randomAccessFile;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
public class RandomAccessFileDemo {
public static void main(String[] args) throws IOException {
File directory=new File("demo");
if (!directory.exists()) {
directory.mkdir();
}
File file=new File(directory, "raf.txt");
if (!file.exists()) {
file.createNewFile();
}
RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw");
//指针的位置
System.out.println(randomAccessFile.getFilePointer());
randomAccessFile.write(‘赵‘);//只写了一个字节
System.out.println(randomAccessFile.getFilePointer());
randomAccessFile.write(‘B‘);
System.out.println(randomAccessFile.getFilePointer());
int i=0x7ffffff;
//用write方法,每次只能写一个字节,如果把i写进去要写4次
randomAccessFile.write(i>>>24);//高8位
randomAccessFile.write(i>>>16);
randomAccessFile.write(i>>>8);
randomAccessFile.write(i);
System.out.println(randomAccessFile.getFilePointer());
//可以直接写一个i
randomAccessFile.writeInt(i);
System.out.println(randomAccessFile.getFilePointer());
String s="中";
byte[] bytes=s.getBytes("gbk");
randomAccessFile.write(bytes);
System.out.println(randomAccessFile.length());
System.out.println(randomAccessFile.getFilePointer());
//读文件,必须把指针移到头部
randomAccessFile.seek(0);
//一次性读取,把文件中的内容都读到字节数组中
byte[] bs=new byte[(int)randomAccessFile.length()];
randomAccessFile.read(bs);
System.out.println(Arrays.toString(bs));
String ss=new String(bs);
System.out.println(ss);
randomAccessFile.close();
}
}
// Integer.toHexString(b&0xFF)把byte字节数组转换成十六进制。
以上是关于Java.io.RandomAccessFile的主要内容,如果未能解决你的问题,请参考以下文章