RandomAccessFile的读写

2018-05-23  本文已影响9人  Joy_yang17
public class RandomAccessFileDemo {

        public static void main(String[] args) throws IOException {

            /*
             * RandomAccessFile:
             * 特点:
             * 1,只能操作文件。
             * 2,既能读,又能写。
             * 3,维护了一个byte数组。内部定义了字节流的读取和写入。
             * 4,通过对指针的操作可以实现对文件的任意位置的读取和写入。
             */
            
            writeFile();
            readFile();
        }

        public static void readFile() throws IOException {

            RandomAccessFile raf = new RandomAccessFile("learn.txt", "r");

            //随机读取全部,只要通过设置指针的位置即可。
            raf.seek(2);
             String temp = raf.readLine();
              while(temp!=null)
              {
                   //writeIndex(raf.getFilePointer());
                  temp = new String(temp.getBytes("ISO-8859-1"),"utf-8");
                  System.out.println("||||||:"+temp);
                  temp = raf.readLine();
              }
              raf.close();
            
            //随机读取,只要通过设置指针的位置即可。
//              raf.seek(8*1);
//
//              byte[] buf = new byte[4];
//              raf.read(buf);
//              String name = new String(buf);
//
//              int age = raf.readInt();
//
//              System.out.println(name+":"+age);
//
//              raf.close();
//
        }

        public static void writeFile() throws IOException {

            //1,创建一个随机访问文件的对象。文件不存在,则创建,存在,则不创建不覆盖。
            RandomAccessFile raf = new RandomAccessFile("learn3.txt", "rw");

            //2,写入姓名和年龄。
//          raf.write("张三".getBytes());
//          raf.writeInt(97);//保证整数的字节原样性。
//          raf.write("李四".getBytes());
//          raf.writeInt(99);//保证整数的字节原样性。

            //3,随机写入。
            raf.seek(8);//设置指针的位置。
            raf.write("数学".getBytes("UTF-8"));
            //raf.writeInt(100);
            System.out.println(raf.getFilePointer());

            raf.close();
        }   
}
上一篇下一篇

猜你喜欢

热点阅读