java io之RandomAccessFile的用法
Employee.java
1 package com.io; 2 3 public class Employee { 4 5 private String name; 6 7 private int age; 8 9 private static final int LEN = 8; 10 11 public Employee(String name, int age) { 12 super(); 13 if (name.length() > LEN) { 14 name = name.substring(0, LEN); 15 } else { 16 while (name.length()<LEN) { 17 name += "\u0000"; 18 } 19 } 20 this.age = age; 21 this.name = name; 22 } 23 24 public String getName() { 25 return name; 26 } 27 28 public void setName(String name) { 29 this.name = name; 30 } 31 32 public int getAge() { 33 return age; 34 } 35 36 public void setAge(int age) { 37 this.age = age; 38 } 39 40 41 42 43 }
RamdomFileTest.java
1 package com.io; 2 3 import java.io.IOException; 4 import java.io.RandomAccessFile; 5 6 public class RamdomFileTest { 7 8 public static void main(String[] args) throws IOException { 9 Employee e1 = new Employee("zhangsan",23); 10 Employee e2 = new Employee("lisi",24); 11 Employee e3 = new Employee("wangwu",25); 12 13 RandomAccessFile ra = new RandomAccessFile("f:\\1.txt","rw"); 14 ra.write(e1.getName().getBytes()); 15 ra.writeInt(e1.getAge()); 16 ra.write(e2.getName().getBytes()); 17 ra.writeInt(e2.getAge()); 18 ra.write(e3.getName().getBytes()); 19 ra.writeInt(e3.getAge()); 20 ra.close(); 21 22 RandomAccessFile raf = new RandomAccessFile("f:\\1.txt","r"); 23 int len = 8; 24 raf.skipBytes(12); 25 System.out.println("第二个员工的信息:"); 26 String str = ""; 27 for (int i = 0; i < len; i++) { 28 str = str+ (char)raf.readByte(); 29 } 30 System.out.println("name:"+str); 31 System.out.println("age:"+raf.readInt()); 32 33 System.out.println("第一个员工的信息:"); 34 raf.seek(0); 35 str = ""; 36 for (int i = 0; i < len; i++) { 37 str = str + (char)raf.readByte(); 38 } 39 System.out.println("name:"+str); 40 System.out.println("age:"+raf.readInt()); 41 42 System.out.println("第三个员工的信息:"); 43 raf.skipBytes(12); 44 str = ""; 45 for (int i = 0; i < len; i++) { 46 str = str + (char)raf.readByte(); 47 } 48 System.out.println("name:"+str); 49 System.out.println("age:"+raf.readInt()); 50 51 System.out.println("程序执行完毕..."); 52 } 53 }
打印结果:
第二个员工的信息:
name:lisi
age:24
第一个员工的信息:
name:zhangsan
age:23
第三个员工的信息:
name:wangwu
age:25
程序执行完毕...