java-文件操作RandomAccessFile

来源:互联网 发布:wp 利用 知乎 编辑:程序博客网 时间:2024/05/21 02:33
import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class RandomAccessFileDemo {    public static void main(String[] args) throws IOException {        RandomAccessFile rdf=new RandomAccessFile("max.txt","rw");        /**写入int最大值*/        int imax=Integer.MAX_VALUE;        rdf.write(imax>>>24);        rdf.write(imax>>>16);        rdf.write(imax>>>8);        rdf.write(imax);//      rdf.writeInt(imax);//相当于上面4句        /**         * seek方法         * void seek(long pos)         * 用于移动当前RandomAccessFile的指针位置         */        rdf.seek(0);        /**         * long getFilePointer()         * 用于获取当前RandomAccessFile的指针位置         */        System.out.println("写入完毕");        /**         * int readInt()         * 连续读取4个字节并返回该int值         * 若在读取4个字节的过程中读取到了文件末尾则会抛出异常EOFException         * EOF(end of file)         */        System.out.println("pos:"+rdf.getFilePointer());// pos:0        System.out.println("读取:"+rdf.readInt());//读取:2147483647        System.out.println("pos:"+rdf.getFilePointer());//pos:4   因为int是4个字节        rdf.seek(0);        System.out.println("读取:"+rdf.read());//127 读取的是byte的最大值        System.out.println("pos:"+rdf.getFilePointer());//pos:1        System.out.println("读取:"+rdf.read());//255        System.out.println("pos:"+rdf.getFilePointer());//pos:2//      System.out.println("读取:"+rdf.readInt());//指针走到文件末尾。出错抛出异常:java.io.EOFException        rdf.seek(0);        rdf.close();        /**         * String提供了方法可以将当前字符串转换为一组字节         * byte[] getBytes()         * 按照系统默认字符集转换为一组字节         *  int read(byte[] b)          * 将最多 b.length 个数据字节从此文件读入 byte 数组。          */        RandomAccessFile raf=new RandomAccessFile("raf.txt","rw");        String str="hello word!";        /**字符串写入**/        byte[] date1=str.getBytes();//11个。字符        raf.write(date1);        raf.write("大家好!".getBytes("utf-8"));        System.out.println("字符串写入完毕");        raf.seek(0);        //解析字符串并读取        byte[] date2=new byte[(int) raf.length()];        int len=raf.read(date2);//实际读取的数据字节        String ss=new String(date2,0,len,"utf-8");        System.out.println("读取结果:"+ss);        raf.close();    }}
原创粉丝点击