日期:2014-05-20  浏览次数:20665 次

碰到难题了,解决不了.需要帮助,为什么这样不能循环读取对象数据啊...

//tea.txt   是一个文件,保存的几个类对象
//faculty是所保存类的类类型

public   static   void   read()
{try    
{ObjectInputStream   p=new   ObjectInputStream(new   FileInputStream( "tea.txt "));    
String   output=new   String();
int   i=0;
while((t=(faculty)(p.available()))!=0)
  output+=t[i].getname()+ "       "+t[i].getnum()+ "\n ";

 
  JOptionPane.showMessageDialog(null,output);


p.close();

}
catch(Exception   ex)
{
 
}

}

}

按照我这种方法读不出来,但是我如果单独这样测试的话是有结果的:
    t[0]=new   faculty();
    t[0]=(faculty)p.readObject();
    output+=t[0].getname()+ "       "+t[0].getnum()+ "\n ";
    JOptionPane.showMessageDialog(null,output);
既然这样有结果,那为什么循环没有呢?    
并且如果我继续再写一段上面的东西的话,就什么都没有了,好奇怪啊!




------解决方案--------------------
ObjectInputStream p=new ObjectInputStream(new FileInputStream( "tea.txt "));
faculty[] t=new faculty[3];
String output= " ";
int i=0;
faculty data = (faculty)p.readObject();
while(data != null) {
t[i]=data;
data = (faculty)p.readObject();
output+=t[i].getname()+ " "+t[i].getnum()+ "\n ";
i++;
if (i> 2) break;
}
p.close();

前提是,你的文件也是通过 writeObject()写进去的。