如何判断是否读取到文件的结尾呢?
代码如下:
class Student implements Serializable{
private static  String id;
private  String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}

}public class ObjectInputSteamTest { public static void main(String[] args) throws FileNotFoundException {
 Student s1 = new Student("1001","张三");
 Student s2 = new Student("1002","李四");
 
 try {
   FileOutputStream outFile= new FileOutputStream("b.txt");
 ObjectOutputStream outObj = new ObjectOutputStream(outFile);
 outObj.writeObject(s1);
 outObj.writeObject(s2);
 outObj.flush(); 
 //这里已经把2个java类(Student)实例写入到b.txt文件中了  FileInputStream inFile = new FileInputStream("b.txt");
 ObjectInputStream inObj = new ObjectInputStream(inFile);
 try {
  
Object obj = inObj.readObject();
//这里只能从b.txt文件中读取一个类,另外的类如何读取呀?  System.out.println(obj);
 

} catch (ClassNotFoundException e) {
 
e.printStackTrace();
}  
 
 
} catch (IOException e) {
e.printStackTrace();
} }}

解决方案 »

  1.   

    请copy我的代码实际测试一下,分不够可以加分呀!
      

  2.   


    import java.io.*;class Student implements Serializable{
        private static String id;
        private String name;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Student(String id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
        @Override
        public String toString() {
            return "Student [id=" + id + ", name=" + name + "]";
        }}public class ObjectInputSteamTest {    public static void main(String[] args) throws FileNotFoundException {
            Student s1 = new Student("1001","张三");
            Student s2 = new Student("1002","李四");        try {
                FileOutputStream outFile= new FileOutputStream("resources/out/b.txt");
                ObjectOutputStream outObj = new ObjectOutputStream(outFile);
                outObj.writeObject(s1);
                outObj.writeObject(s2);
                outObj.flush();
                outObj.close();
    //这里已经把2个java类(Student)实例写入到b.txt文件中了
                FileInputStream inFile = new FileInputStream("resources/out/b.txt");
                ObjectInputStream inObj = new ObjectInputStream(inFile);
                try {                Student stu1 = (Student)inObj.readObject();
                    Student stu2 = (Student)inObj.readObject();
    //这里只能从b.txt文件中读取一个类,另外的类如何读取呀?
    // 保证inObj调用readObject()的顺序跟程序之前写入的顺序一致就可以读出
    // 无法判定是否已经到文件结尾;
                   System.out.println(stu1);
                    System.out.println(stu2);            } catch (ClassNotFoundException e) {                e.printStackTrace();
                }           inObj.close();
            } catch (IOException e) {
                e.printStackTrace();
            }    }}
      

  3.   

    import java.io.*;class Student implements Serializable{
        private static String id;
        private String name;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Student(String id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
        @Override
        public String toString() {
            return "Student [id=" + id + ", name=" + name + "]";
        }}public class ObjectInputSteamTest {    public static void main(String[] args) throws FileNotFoundException {
            Student s1 = new Student("1001","张三");
            Student s2 = new Student("1002","李四");        try {
                FileOutputStream outFile= new FileOutputStream("resources/out/b.txt");
                ObjectOutputStream outObj = new ObjectOutputStream(outFile);
                outObj.writeObject(s1);
                outObj.writeObject(s2);
                outObj.flush();
                outObj.close();
    //这里已经把2个java类(Student)实例写入到b.txt文件中了
                FileInputStream inFile = new FileInputStream("resources/out/b.txt");
                ObjectInputStream inObj = new ObjectInputStream(inFile);
                try {                Student stu1 = (Student)inObj.readObject();
                    Student stu2 = (Student)inObj.readObject();
    //这里只能从b.txt文件中读取一个类,另外的类如何读取呀?
    // 保证inObj调用readObject()的顺序跟程序之前写入的顺序一致就可以读出
    // 无法判定是否已经到文件结尾;
                   System.out.println(stu1);
                    System.out.println(stu2);            } catch (ClassNotFoundException e) {                e.printStackTrace();
                }           inObj.close();
            } catch (IOException e) {
                e.printStackTrace();
            }    }}
      

  4.   

    resources/out/b.txt 这个是我本机的测试路径,你改成b.txt就可以了,改掉程序里面的两处,应该可以跑起来
      

  5.   


    Student stu1 = (Student)inObj.readObject();
    Student stu2 = (Student)inObj.readObject();或者
    Object obj = null;
    try {
       while((obj = inObj.readObject()) != null) {
          System.out.println(obj);
       }
    }
    catch(EOFException e) {
       //read end
    }
      

  6.   

    首先,ObjectInputStream只能读取一个object,看看名字也能知道不是ObjectsInputStream。
    最后,ObjectInputStream只能读取non-static属性。
      

  7.   

    各位大侠,你们没有发现读出来的数据是错得吗?static属性能读出来吗?
      

  8.   

       in.readObject() 对应你 out.writeObject()   你write了几次, 你就能in几次
      

  9.   

    -----------------
    不行的。后面的 out.writeObject(),会覆盖掉前面的 out.writeObject()。不管写多少次,txt文件中只有最后一个!
      

  10.   

    id定义为了static的了
    5楼正解