package com.io.randomaccessfile;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 该类不是IO体系中的子类,而是直接集成自Object
* 但是它是IO中成员,因为它具备读写功能
* 内部封装了一个大型byte数组,而且通过指针数组的元素惊醒操作
* 可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置
* 其实文成读写的原理就是内部封装了字节输入流和输出流
* 通过构造函数可以看出,该类只能操作硬盘文件
* 而且操作文件还有模式:只读r,读写rw等等
* 而且该对象的构造函数要操作的文件不存在,会自动创建,如果存在,不会覆盖,会直接调用存在的
*
* 如果模式为只读r:不会创建文件,会去读取一个已存在的文件,如果文件不存在,则会出现异常
* 如果模式为可读可写rw:操作的文件不存在,会自动创建,如果存在,不会覆盖,会直接调用
* @author wjw
*/
public class RandowAccessFile_class {
public static void main(String[] args) throws IOException {
// writeMethod();
readMethod();
}
public static void readMethod() throws IOException{
RandomAccessFile raf=new RandomAccessFile("g:/java/randomAccessFile.txt","r");
raf.seek(8*5);//改变指针的位置,把指针移动到数组的第8*n个位置
byte[]b=new byte[4];
// raf.read(b);
// String name=new String(b);
// System.out.println(name);
// int age=raf.readInt();
// System.out.println(age);
raf.read(b);
String name1=new String(b);
System.out.println(name1);
int age1=raf.readInt();
System.out.println(age1);
raf.close();
}
public static void writeMethod() throws IOException{
RandomAccessFile raf=new RandomAccessFile("g:/java/randomAccessFile.txt","rw");
//当然写入数据的时候也可以指定指针的
raf.seek(8*5);
raf.write("战三22".getBytes());
raf.writeInt(99);//注意这里,这里用的writeInt()方法,此方法可以一次写8个字节,因为整形有八个字节,所以可以一次写入
raf.write("李四22".getBytes());
raf.writeInt(120);
raf.close();
}
}
黑马程序员——RandomAccessFile随机读写数据
最新推荐文章于 2022-03-26 14:03:43 发布