还是打印不出来啊
我想打印出这样的结果:
lisi:258
张三:23
wangwu:25
编写了两个类Emplyee.java和RandomFileTest.java,程序编译也通过了,但是打印结果不对啊!还有在Emplyee.java类中,\0000,占用几个字节啊!
代码如下:Emplyee.java类
public class Emplyee {
	public String name = null;
	public int age = 0;
	public static final int LEN = 8;
	/**
	 * Method Emplyee
	 *
	 *
	 */
	public Emplyee(String name,int age) {
		// TODO: Add your code here
		if(name.length()>LEN)
		{
			name = name.substring(0,LEN);
		}
		else
		{
			name += "\0000";
		}
		this.name = name;
		this.age = age;
	}
}
RandomFileTest.java类
import java.io.*;
public class RandomFileTest {	
	/**
	 * Method main
	 *
	 *
	 * @param args
	 *
	 */
	public static void main(String[] args) throws Exception
		 {
		// TODO: Add your code here
		Emplyee a = new  Emplyee("张三",23);
		Emplyee b = new  Emplyee("lisi",258);
		Emplyee c = new  Emplyee("wangwu",25);
	    RandomAccessFile ra = new RandomAccessFile("tt.text","rw");
		ra.writeChars(a.name);
		ra.writeInt(a.age);
		ra.writeChars(b.name);
		ra.writeInt(b.age);
		ra.writeChars(c.name);
		ra.writeInt(c.age);
		ra.close();		
		String strName = "";
		//int len = 0;
		//byte[] buf = new byte[8];
		RandomAccessFile raf = new RandomAccessFile("tt.text","r");
		raf.skipBytes(20);
		//len = raf.read(buf);
		//strName= new String(buf,0,len);
		for(int i=0;i<16;i++)
		{
			strName += raf.readChar();
		}
		System.out.println(strName.trim()+":"+raf.readInt());		
		strName = "";
		raf.seek(0);
		//len = raf.read(buf);
		//strName = new String(buf,0,len);
		for(int i=0;i<16;i++)
		{
			strName += raf.readChar();
		}
		System.out.println(strName.trim()+":"+raf.readInt());		
		raf.skipBytes(20);
		//len = raf.read(buf);
		//strName = new String(buf,0,len);
	    strName = "";
		for(int i=0;i<16;i++)
		{
			strName += raf.readChar();
		}
		System.out.println(strName.trim()+":"+raf.readInt());
		raf.close();		
	}	
}
------解决方案--------------------我有点想不通楼主为什么不用序列化来解决这个问题呢?
还有....
ra.writeChars(a.name);  
ra.writeInt(a.age);  
ra.writeChars(b.name);  
ra.writeInt(b.age);  
ra.writeChars(c.name);  
ra.writeInt(c.age);  
这些代码太笨啦....你在Emplyee 类中重写toString()方法,然后直接
rs.write((a.toString()+"\r\n").getBytes())这样不是更爽?