我写的两个Object Serializable练习程序,为什么对象能写进文件,但是却不能把它读出来,那位高手能够指点?敬礼,谢谢!
//写对象的文件Ser1.java
import java.io.*;class Man implements Serializable{
String name;
int age;
double height;
}
public class Ser1 { /**
 * @param args
 */
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("c:\\abc.dat");
ObjectOutputStream oos=new ObjectOutputStream(fos);
Man m=new Man();
m.name="何春根";
m.age=22;
m.height=170.0;

oos.writeObject(m);
oos.close();
System.out.println("以降文件输出至文件");
// TODO Auto-generated method stub }}-------------------------------------------------------------------
//读出刚写进去对象的文件Ser2.java
//出现错误
import java.io.*;public class Ser2 { /**
 * @param args
 */
public static void main(String[] args) throws IOException{
FileInputStream fis=new FileInputStream("c:\\abc.dat");
ObjectInputStream iso=new ObjectInputStream(fis);

Man m;
m=(Man)iso.readObject();//出错的地方
iso.close();

System.out.println(m.name);
System.out.println(m.age);
System.out.println(m.height);
// TODO Auto-generated method stub }}///////////////////////////////////////////////////////////////
不知为什么出现下面的错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Unhandled exception type ClassNotFoundException at Ser2.main(Ser2.java:13)

解决方案 »

  1.   

    捕获一下可能的异常:ClassNotFoundException,程序要求你捕获.
      

  2.   

    代码基本没问题,应该在 oos.close(); 前加上 oos.flush();。
      

  3.   

    楼上说的也对,我忘记了。JAVA 的入口方法是死的,必须写成:public static void main(String[] args) {
    }包括不可以抛出异常,否则就只是一个普通的静态方法,而不再是一个入口方法了。下边的代码已经调试://Man.java
    import java.io.Serializable;public class Man implements Serializable{
            String name;
            int age;
            double height;
    }//Ser1.java
    import java.io.*;public class Ser1 {    public static void main(String[] args) {
            Man m = new Man();
            m.name = "何春根";
            m.age = 22;
            m.height = 170.0;        FileOutputStream fos = null;
            try {
                fos = new FileOutputStream("abc.dat");
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                oos.writeObject(m);
                oos.flush();
                oos.close();
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            }
            catch (IOException ex1) {
                ex1.printStackTrace();
            }
            System.out.println("以降文件输出至文件");
        }
    }//Ser2.java
    import java.io.*;public class Ser2 {    public static void main(String[] args) {
            Man m = null;
            try {
                FileInputStream fis = new FileInputStream("abc.dat");
                ObjectInputStream iso = new ObjectInputStream(fis);
                m = (Man) iso.readObject();
                iso.close();
            } catch (ClassNotFoundException ex1) {
                ex1.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            System.out.println(m.name);
            System.out.println(m.age);
            System.out.println(m.height);
        }
    }