- 随机访问文件,自身具备读取方法
- 通过SkipBytes(int x),seek(int x)到达随机访问。
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.RandomAccessFile;
- /**
- * 该类不算IO体系中子类,直接继承Object
- *但是它是IO包中成员,因为它具备读和写功能
- *内部封装了一个数组,而且通过指针对数组的数据元素进行操作
- *可以通过getFilePointer获取指针位置
- *seek改变指针位置
- *
- *其实完成读写的原理就是内部封装了字节输入流和输出流
- *通过构造函数可以看出,该类只能操作文件。而且操作文件还有模式
- *只读r,读写rw等
- *如果模式只读r,不会创建文件,会读取一个存在文件,如果文件不存在,出现异常
- *如果模式读写rw,操作的文件不存在,自动创建如果存在,不会覆盖。
- */
- public class RandomAccessFileDemo {
- public static void main(String[] args) throws IOException {
- RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");
- raf.write("李斯".getBytes());
- //按四个字节将 int 写入该文件,先写高字节。
- raf.writeInt(97);
- raf.close();
- RandomAccessFile raf1=new RandomAccessFile("ran.txt","rw");
- byte[] buf=new byte[4];
- raf1.read(buf);
- System.out.println(new String(buf));
- //调整指针
- //raf1.seek(4);
- //跳过指定的字节数,只能向后跳
- raf.skipBytes(0);
- int age =raf1.readInt();
- System.out.println(age);
- raf1.close();
- writeFile();
- }
- //随机写数据
- public static void writeFile() throws IOException{
- RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");
- raf.seek(8*3);
- raf.write("周期".getBytes());
- raf.writeInt(100);
- raf.close();
- }
- }
复制代码
|
|