1 package FileDemo; 2 3 import java.io.IOException; 4 import java.io.RandomAccessFile; 5 6 public class RandomAccessFileDemo { 7 8 /** 9 * @param args10 * @throws IOException11 */12 public static void main(String[] args) throws IOException {13 14 writeAccess();15 readAccess();16 randomWrite();17 }18 19 // 随机写入数据,可以实现对已有数据的修改,因为可以使用seek()方法改变文件指针的位置20 private static void randomWrite() throws IOException {21 RandomAccessFile raf = new RandomAccessFile("random.txt", "rw");22 raf.seek(8 * 4);//将文件指针移动到指定位置23 System.out.println(raf.getFilePointer());24 raf.write("Ruby".getBytes());25 raf.writeInt(99);26 }27 28 private static void readAccess() throws IOException {29 RandomAccessFile raf = new RandomAccessFile("random.txt", "r");30 System.out.println(raf.getFilePointer());31 raf.seek(8);// 用于实现随机读取文件中的数据,数据最号有规律32 System.out.println(raf.getFilePointer());33 byte buf[] = new byte[4];34 raf.read(buf);35 String name = new String(buf);36 int age = raf.readInt();37 System.out.println("name=" + name);38 System.out.println("age=" + age);39 System.out.println(raf.getFilePointer());40 41 }42 43 private static void writeAccess() throws IOException {44 // rw:当这个文件不存在,会创建文件,当文件已经存在,不会创建,所以不会出现和输出流一样的覆盖45 RandomAccessFile raf = new RandomAccessFile("random.txt", "rw");46 raf.write("Java".getBytes());47 raf.writeInt(97);48 raf.write("python".getBytes());49 raf.write(98);50 raf.close();51 }52 53 }