/*
* 该类不是IO中的子类,但具备读写功能,是属于io包的的成员,他继承至Object.比较特殊。
* 内部封装了一个数组,而且通过指针对数组的元素进行操作。 //随机的原因就是利用指针,但是数据最好有规律(字节数有规律)
*
可以通过getFilePointer获取指针位置,
同时可以通过seek改变指针的位置。
* 能够实现读写的原因:封装了字节输入和输出流。
* 通过构造函数可以看出其的局限性:只能够读写文件。
* 而且操作文件还有模式:只读r,,读写rw等。
如果模式为只读 r。不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现异常。
如果模式rw。操作的文件不存在,会自动创建。如果存则不会覆盖。
* write()的原理:只写出最低八位。
* writeInt():写4个八位。
*
特点:可以对指定位置进行查询修改,可以对文件进行分段操作。(一段数据分为几段,再有多个线程来控制,例如软件的下载,而一般
流是从头到尾他们的数据不连续,)
* */
class RandomAccess{
public static void main(String[] args)throws IOException{
read();
}
public static void read()throws IOException{
RandomAccessFile raf=new RandomAccessFile("haha.txt","rw");//创建一个模式没rw随机流对象,
raf.write("张超".getBytes());//在默认的指针处写入张超。
// raf.write(22);
raf.write(257);//由于写的时候只写了最低8位,会丢失数据。
raf.seek(0);//把指针移到0的位置。
byte[] by=new byte[8];
raf.read(by);
sop(new String(by,0,7));
raf.close();//
}
public static void sop(Object obj){
System.out.println(obj);
}
}