程序清单如下:RandomFileTest.java
错误现象:通过raf写入的数据有问题,通过raf2读出的数据当然就不对了,错误原因正在寻找中!
错误现象:通过raf写入的数据有问题,通过raf2读出的数据当然就不对了,错误原因正在寻找中!
import
java.io.
*
;
public class RandomFileTest
{
public static void main(String[] args) throws Exception
{
Employee ep1 = new Employee("ZhangShan",18);
Employee ep2 = new Employee("LiSi",20);
Employee ep3 = new Employee("WangWu",39);
RandomAccessFile raf = new RandomAccessFile("d:/java/RandomFile.txt","rw");
raf.write(ep1.name.getBytes());
raf.write(ep1.age);
raf.write(ep2.name.getBytes());
raf.write(ep2.age);
raf.write(ep3.name.getBytes());
raf.write(ep3.age);
raf.close();
RandomAccessFile raf2 = new RandomAccessFile("d:/java/RandomFile.txt","r");
int len = 8;
raf2.skipBytes(12); //跳过第一个员工的信息,name 8个字节,age4个字节。
System.out.println("输出第二个员工信息");
String str = "";
for(int i=0;i<len;i++)
{
str = str+(char)raf2.readByte(); //循环输出name的所有字节。
}
System.out.println("name : "+str);
System.out.println("age : "+raf2.readInt());
System.out.println("输出第一个员工信息:");
raf2.seek(0); //把指针移到开始位置
str = "";
for(int i=0;i<len;i++)
{
str = str+(char)raf2.readByte();
}
System.out.println("name : "+str);
System.out.println("age : "+raf2.readInt());
System.out.println("输出第三个员工信息");
raf2.skipBytes(12); //定位指针到第三个
str = "";
for(int i=0;i<len;i++)
{
str = str+(char)raf2.readByte();
}
System.out.println("name : "+str);
System.out.println("age : "+raf2.readInt());
raf2.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); //截取前8个字节
}
else
{
while(name.length()<LEN)
name = name + ""; //,代表一个什么东西?为什么不能用其它的
}
this.name = name;
this.age = age;
}
}
public class RandomFileTest
{
public static void main(String[] args) throws Exception
{
Employee ep1 = new Employee("ZhangShan",18);
Employee ep2 = new Employee("LiSi",20);
Employee ep3 = new Employee("WangWu",39);
RandomAccessFile raf = new RandomAccessFile("d:/java/RandomFile.txt","rw");
raf.write(ep1.name.getBytes());
raf.write(ep1.age);
raf.write(ep2.name.getBytes());
raf.write(ep2.age);
raf.write(ep3.name.getBytes());
raf.write(ep3.age);
raf.close();
RandomAccessFile raf2 = new RandomAccessFile("d:/java/RandomFile.txt","r");
int len = 8;
raf2.skipBytes(12); //跳过第一个员工的信息,name 8个字节,age4个字节。
System.out.println("输出第二个员工信息");
String str = "";
for(int i=0;i<len;i++)
{
str = str+(char)raf2.readByte(); //循环输出name的所有字节。
}
System.out.println("name : "+str);
System.out.println("age : "+raf2.readInt());
System.out.println("输出第一个员工信息:");
raf2.seek(0); //把指针移到开始位置
str = "";
for(int i=0;i<len;i++)
{
str = str+(char)raf2.readByte();
}
System.out.println("name : "+str);
System.out.println("age : "+raf2.readInt());
System.out.println("输出第三个员工信息");
raf2.skipBytes(12); //定位指针到第三个
str = "";
for(int i=0;i<len;i++)
{
str = str+(char)raf2.readByte();
}
System.out.println("name : "+str);
System.out.println("age : "+raf2.readInt());
raf2.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); //截取前8个字节
}
else
{
while(name.length()<LEN)
name = name + ""; //,代表一个什么东西?为什么不能用其它的
}
this.name = name;
this.age = age;
}
}