萨日娜照片:关于JAVA IO 问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 07:46:41
import java.io.*;
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() <0);
name = name+"\u0000";
}
this.name = name;
this.age = age;
}
}
public class RandomFileTest {

/**
* @param args
*/
public static void main(String[] args) {
Employee e1 = new Employee("Lisi",20);
Employee e2 = new Employee("zhangsn",26);
// Employee e3 = new Employee("王五",30);
//Employee e4 = new Employee("张1三",10);
try{
RandomAccessFile ra = new RandomAccessFile("c:\\2.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() ;

}catch(Exception e){
e.getMessage() ;
}
try{
int len = 8;
RandomAccessFile raf = new RandomAccessFile("c:\\2.txt","r");
raf.skipBytes( 12);
System.out.println("第2员工信息");
String str= "";
for(int i =9;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 =9;i<len;i++)
str = str+(char)raf.readByte() ;
System.out.println("name"+str);
System.out.println("age"+raf.readInt() );
raf.close() ;
}catch(Exception ec){
ec.getMessage() ;
}

}

}

为什么我输出的是
第2员工信息
name
age1852273518
第一个员工的信息
name
age1281979241
高手帮忙啊

两个地方出错:

1。当姓名长度小于8时 补足8位

while(name.length() <LEN) //分号去掉
name = name+"\u0000";

2。i 为什么等于9 ? 改为0

for(int i =0;i<len;i++)
str = str+(char)raf.readByte() ;

import java.io.*;
class Employee{
String name;
String age;
//final static int LEN = 8;
public Employee(String name,String age){

this.name = name;
this.age = age;
}
}
public class RandomFileTest {

/**
* @param args
*/
public static void main(String[] args) {
Employee e1 = new Employee("Lisi","20");
Employee e2 = new Employee("zhangsn","26");
// Employee e3 = new Employee("王五",30);
//Employee e4 = new Employee("张1三",10);
try{
RandomAccessFile ra = new RandomAccessFile("d:\\2.txt","rw");
ra.write(10);
ra.write(e1.name.getBytes());
ra.write(10);
ra.write(e1.age.getBytes()) ;
ra.write(10);
ra.write( e2.name.getBytes() );
ra.write(10);
ra.write(e2.age.getBytes());
// ra.write(e3.name.getBytes() );
//ra.writeInt(e3.age );
ra.close() ;

}catch(Exception e){
e.getMessage() ;
}
try{
int len = 8;
RandomAccessFile raf = new RandomAccessFile("d:\\2.txt","r");
//raf.skipBytes( 12);
while((raf.readLine())!=null)
{
System.out.println("第2员工信息");
//for(int i =0;i<len;i++)
System.out.println("name:"+raf.readLine());
//int a=Integer.parseInt(str2);
System.out.println("age:"+raf.readLine());

System.out.println("第一个员工的信息");
//raf.seek( 0);
//str="";
//for(int i =9;i<len;i++)
//str = str+(char)raf.readByte() ;
System.out.println("name:"+raf.readLine());
System.out.println("age:"+raf.readLine());
raf.close() ;
}
}catch(Exception ec){
ec.getMessage();
}
}
}