java IO随机读写流
package com.io.file;import java.io.IOException;import java.io.RandomAccessFile;/** * @类功能说明:该类不是IO体系中的,而是直接继承自Object * 但是它是IO包中的一员,因为他具备了读写能力 * 内部封装了一个数组,可以通过指针对数组元素的操作 * 可以通过getFilePointer获取指针的位置 * 同时可以通过seek改变指针的位置 * * 其实完成读写的原理,就是内部封装了字节写入流和字节输出流 * 通过构造函数可以看出,该类仅操作文件 * 而且操作文件还有模式:r(只读),rw(读写)等 * * 如果模式为r,不会创建文件,会去读取一个文件,如果读不到,则抛出异常 * 如果模式为rw,要操作的文件不存在,会创建,如果存在,则不会覆盖(写入数据的时候覆盖相应字节位置的数据) * @类修改者: * @修改日期: * @修改说明: * @作者:matieli * @创建时间:May 26, 2012 9:28:59 AM * @版本:V1.0 * */public class RandomAccessFileDemo {public static void main(String[] args)throws IOException {//writeFile();//readFile();//writeFile_2();}public static void readFile()throws IOException{RandomAccessFile raf=new RandomAccessFile("ran.txt","r");//跳过“李四”,读取张三的信息//raf.seek(8);//当前例子中,名字和年龄各占4个字节raf.skipBytes(8);//通过掉过字节数的方式,不能向回读。byte[] b=new byte[4];//之前写入的都是按4字节写入的raf.read(b);String name=new String(b);System.out.println("名字是:"+name);int age =raf.readInt();System.out.println("年龄是:"+age);raf.close();}public static void writeFile_2()throws IOException{RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");//控制写入的位置raf.seek(8*3);raf.write("王五".getBytes());raf.writeInt(103);//按int的4字节写入raf.close();}public static void writeFile()throws IOException{RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");raf.write("李四".getBytes());raf.writeInt(97);//按int的4字节写入raf.write("张三".getBytes());raf.writeInt(99);//按int的4字节写入raf.close();}}