Java-IO流-RandomAccessFile

2018-07-23  本文已影响19人  码农随想录
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileDemo {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        /*
         * RandomAccessFile:
         * 1,随机访问。
         * 2,操作文件。
         * 3,既可以读又可以写,
         * 4,内部维护了用于存储数据的byte数组。
         * 5,提供了一个对数组操作的文件指针。
         * 6, 文件指针可以通过getFilePointer 方法读取,并通过 seek 方法设置。 
         * 
         * 注意:随机读写,数据需要规律,用RandomAccessFile类需要明确要操作的数据的位置。
         */

//      writeFile();
        
        readFile();
        
    }

    public static void readFile() throws IOException {
    
        RandomAccessFile raf = new RandomAccessFile("tempfile/random.txt", "r");
        //改变指针的位置,想读谁就读谁。
        raf.seek(8*3);
        
        
        byte[] buf = new byte[4];
        raf.read(buf);
        String name = new String(buf);
        System.out.println("name="+name);
        
        int age = raf.readInt();
        System.out.println("age="+age);
        
        raf.close();
        
    }

    public static void writeFile() throws IOException {
        
        
    
        RandomAccessFile raf = new RandomAccessFile("tempfile/random.txt", "rw");
        
        //写一些字符信息,姓名 +年龄。
//      raf.write("张三".getBytes());
//      raf.writeInt(97);//保证字节的原样性。
//      raf.write("李四".getBytes());
//      raf.writeInt(99);//保证字节的原样性。
        
        raf.seek(4);
        
        raf.write("王武".getBytes());
        raf.writeInt(102);
        
        System.out.println(raf.getFilePointer());
        
        raf.close();
        
    }

}
上一篇下一篇

猜你喜欢

热点阅读