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
程序执行完毕...

 

 

 

posted @ 2012-10-16 10:37  chasewade  阅读(374)  评论(0编辑  收藏  举报