import java.io.RandomAccessFile;
/**
* 该类不是算io体系中子类
* 但它是io包中成员,具备读写功能
* 内部封装了一个数据,通过指针对数据的元素进行操作。
* 可以通过getFilePointer获取指针位置
* 同时可以通过seek改变指针的位置
* 完成读写的原理就是内部封装了字节输入流和输出流
* 通过构造函数可以看出,该类只能操作文件,操作文件还有模式:只读r,读写rw
* 如果模式为r,不会创建文件,会去读取一个已存在文件,若不存在,会报异常
* 模式为rw,相反
* 而且该对象的构造函数要操作的文件不存在,会自动创建,若存在不会覆盖
* @author Administrator
*
*/
public class RandomAcceseFileDome {
public static void main(String[] args) {
try {
writeFile();
readFile();
Integer.toBinaryString(258);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void writeFile() throws IOException{
RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");
raf.write("lisi".getBytes());
raf.writeInt(97);
raf.close();
}
public static void writeFile2() throws IOException{
RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");
raf.seek(8*3);//随机读写,还能修改,输出流new 的时候就会覆盖文件,而这不会
raf.write("".getBytes());
raf.close();
}
public static void readFile() throws IOException{
RandomAccessFile raf=new RandomAccessFile("ran.txt", "r");
//跳转对象中的指针,可前后指
raf.seek(8);
//跳过指定的字节数 不能往回跳
raf.skipBytes(8);
byte[] buf=new byte[4];
raf.read(buf);
String name=new String(buf);
int age=raf.readInt();
raf.close();
}
}