java FileInputStream和FileOutputStream出错

时间:2013-11-15 07:42:42

标签: java inputstream fileoutputstream

我刚刚用Java制作了我的第一个基于I / O的东西。 我想检查写入文件的内容是否正确保存。 为此,我写了以下代码..

    import java.io.*;

    public class check implements Serializable {
        //Make two variables and methods to initialise them
        private int height;
        private int width;
        public void setWidth(int w){
            width = w;
        }
        public void setHeight(int h){
            height = h;
        }
        public static void main(String[] args) {

        check obj = new check();
        obj.setHeight(20);
        obj.setWidth(30);

    try{
        FileOutputStream fs = new FileOutputStream("foo.txt");
        ObjectOutputStream os = new ObjectOutputStream(fs);
        os.writeObject(obj);
        os.close();
    }
    catch(IOException ex){
    }
    //We set them to null so we can't access the objects on heap.
      obj = null;  

    //Now we read them back from file   
    try{
        ObjectInputStream is = new ObjectInputStream(new FileInputStream("foo.txt")); 
        check stored = (check) is.readObject();

    //Check to see if it worked.
     System.out.println("Variable, stored contains.." + stored.getType());
    }
    catch(IOException ex){
        }

    }
 }

但它会产生以下错误。

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
    at check.Check.main(Check.java:33)

有人有任何想法解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

看看http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#readObject()。该方法列出了几个例外。对于列出的每个不是RuntimeException子类的异常,您需要捕获异常或声明该方法可以抛出该异常。您只对IOException执行了此操作。您还需要为文档中列出的其他例外执行此操作。这需要针对抛出非运行时异常的所有方法完成。

答案 1 :(得分:0)

即使您缺少某些类或编译错误,您的IDE也会让您运行一些代码。在运行之前修复编译错误。

答案 2 :(得分:0)

您的代码目前无法编译。第36行失败。

System.out.println("Variable, stored contains.." + stored.getType());

这是因为类检查不包含方法getType()。也许你的意思是getClass().getName()

修复此错误,然后重试。您自己的错误消息对我没有意义 - 它是由IDE生成的吗?

PS。关于类,变量等的命名,请查看Java coding conventions。 :)