RandomAccessFile是IO包中的成员Object的子类,具备读和写的功能,内部封装了一个数组,通过指针对数组元素进行操作。该指针以以字节为单位,通过从文件开头开始计算的偏移量来指明当前读写的位置。类RandomAccessFile提供了seek()方法用于文件指针的移动,移动文件的指针到指定位置,调用读写方法就可以从该位置起读写数据,指针会自动下移。RandomAccessFile提供了getFilePointer获取指针的位置。完成读写的原理是内部封装了字节输入流和输出流。
注意:通过构造函数可以看出,该类只能操作文件。RandomAccessFile(File file,String mode)
而且操作文件还有模式:只读r,,读写rw等。
模式参数与 "r"、"rw"、"rws" 或 "rwd" 的其中一个不相等
模式为只读 r。不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现抛出文件找不到异常。
模式rw。操作的文件不存在,会自动创建。如果文件已经存在那么也不会覆盖。
public static void writeFile_2()throws IOException
{
RandomAccessFile raf = new RandomAccessFile("file.txt","rw");
raf.seek(8);//文件指针移动8个字节
raf.write("zhangsan".getBytes());//操作的是字节
raf.writeInt(12);//提供了直接写入基本数据类型的方法 避免了write()操作时丢失字节
raf.close();
}