import java.io.*;
public class RandomFileTest
{
public static void main(String [] args) throws Exception
{
Employee e1 = new Employee("zhangsan",23);
Employee e2 = new Employee("lisi",22);
Employee e3 = new Employee("wangwu",21);
RandomAccessFile ra = new RandomAccessFile("c:\\1.txt","rw");
ra.write(e1.name.getBytes());
ra.writeInt(e1.age);
ra.write(e2.name.getBytes());
ra.writeInt(e2.age);
ra.write(e3.name.getBytes());
ra.writeInt(e3.age);
ra.close();
RandomAccessFile raf = new RandomAccessFile("c:\\1.txt","r");
int len = 8;
raf.skipBytes(12); //跳过第一个员工的信息,其中姓名8字节,年龄4字节
System.out.println("第二个员工信息:");
String str = "";
for(int i = 0;i < len;i++)
{
str = str + (char)raf.readByte();
}
System.out.println("name:" + str);
System.out.println("age:" + raf.readInt());
System.out.println("第一个员工信息:");
raf.seek(0); //将文件指针移到文件开始位置
str = "";
for(int i = 0;i < len;i++)
{
str = str + (char)raf.readByte();
}
System.out.println("name:" + str);
System.out.println("age:" + raf.readInt());
System.out.println("第三个员工信息:");
raf.skipBytes(12);
str = "";
for(int i = 0;i < len;i++)
{
str = str + (char)raf.readByte();
}
System.out.println("name:" + str);
System.out.println("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()
name = name +"\u0000";
}
this.name = name;
this.age = age;
}
}
ra.write(e1.name.getBytes());中getBytes()是什么意思?
SDK是这样说的:
Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array.
The behavior of this method when this string cannot be encoded in the default charset is unspecified. The CharsetEncoder class should be used when more control over the encoding process is required.
我还是看不太懂。如果e1.name为中文,输出就有点问题,这是什么?