package test
import java.io.*
public class RandomFileDemo {
public static void main(String[] args) throws Exception {
Employee e1=new Employee("张三",23)
Employee e2=new Employee("李四",24)
Employee e3=new Employee("王五",25)
RandomAccessFile ra=new RandomAccessFile("d:\\employee.txt","rw")
ra.writeChars(e1.name)
ra.writeInt(e1.age)
ra.writeChars(e2.name)
ra.writeInt(e2.age)
ra.writeChars(e3.name)
ra.writeInt(e3.age)
ra.close()
RandomAccessFile raf=new RandomAccessFile("d:\\employee.txt","r")
raf.skipBytes(Employee.LEN*2+4)
String str=""
int len=Employee.LEN
for(int i=0i<leni++)
str=str+raf.readChar()
System.out.println("第二位员工信息")
System.out.println("name="+str.trim()+",age="+raf.readInt())
raf.seek(0)
str=""
for(int i=0i<leni++)
str=str+raf.readChar()
System.out.println("第一位员工信息")
System.out.println("name="+str.trim()+",age="+raf.readInt())
str=""
raf.skipBytes(Employee.LEN*2+4)
for(int i=0i<leni++)
str=str+raf.readChar()
System.out.println("第三位员工信息")
System.out.println("name="+str.trim()+",age="+raf.readInt())
raf.close()
}
}
class Employee {
String name
int age
final static int LEN=8
public Employee(String name,int age) {
if(name.length()>LEN)
name=name.substring(0,8)
else {
while(name.length()<LEN)
name=name+"\u0000"
}
this.name=name
this.age=age
}
}
你上面的用getBytes写入的话,是读不出中文的,因为在java 中不管是中文字符还是英文字符 它们都是一个字符 都占用两个字节 在本地的计算机编码系统中英文字符占用一个字节 而中文字符占用两个字节.
想输出出中文的话,就可以存储的时候用writeChars,读出的时候用readChar,
注意在TXT中,这样存是看不到任何数据的,只是一些乱码。读出的时候才能看到正确数据