1 package FileDemo; 2 3 import java.io.IOException; 4 import java.io.RandomAccessFile; 5 6 public class RandomAccessFileDemo { 7 8 /** 9 * @param args 10 * @throws IOException 11 */ 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 }