好的,我只是将我的代码更改为在while循环中使用true。现在当它从文件中读取时,我得到一个流损坏的异常。冷,这是因为obin不是新的。
私有类viewStudentListener实现ActionListener
{
public void actionPerformed(ActionEvent e)
{
尝试{
let myClass1 = factory.createInstance(className: "MyClassName")
} }
这是文件的编写方式
ArrayList<Student> students = new ArrayList<Student>();
FileInputStream fin = new FileInputStream("Students.bin");
ObjectInputStream obin = new ObjectInputStream(fin);
int id = Integer.parseInt(ID.getText());
int count = 0;
while(true)
{
try{
Student s = (Student) obin.readObject();
students.add(s);
}
catch(EOFException eofException){
break;
}
}
while (count < students.size())
{
if(students.get(count).equals(id))
{
fName.setText(students.get(count).getFirstName());
lName.setText(students.get(count).getLastName());
}
count++;
}
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
答案 0 :(得分:0)
available() > 0
不是流结束的有效测试。见Javadoc。
正确的方式是通过while (true)
读取您的信息流,直到EOFException
被抛出。