将对象写入文件

时间:2014-07-30 03:20:37

标签: java file filewriter

我正在开发一个程序,它应该将它的输出(已创建的三角形)写入名为prog6.out的文件中。但是,我无法弄清楚如何做到这一点。

以下是处理文件写入的代码部分:

import java.io.*;
import java.util.Scanner; 

public class Program6 {
    public static void main(String[] args) throws Exception {
        java.io.File file = new java.io.File("prog6.dat");
        Scanner fin = new Scanner(file);
        FileOutputStream output = new FileOutputStream("prog6.out");
        ObjectOutputStream obout = new ObjectOutputStream(output);

        while (fin.hasNext()) {
            double side1 = fin.nextDouble();
            double side2 = fin.nextDouble();
            double side3 = fin.nextDouble();
            String color = fin.next();
            String bool = fin.next();
            boolean filled;
             if(bool.equals("T"))
                  filled = true;
             else
                  filled = false;
            Triangle triangle = new Triangle(side1, side2, side3, color, filled);
            obout.writeObject(triangle);
            //System.out.println(triangle);
        }
        fin.close();
        obout.close();
    }
}

正如我写的那样,我得到一个运行时错误,声明“java.io.NotSerializableException”任何想法如何解决这个问题?

我的程序中有很多代码,包括其他3个类,但是这个特殊类是处理将输出写入文件的类,但是如果我需要包含其余类,请告诉我,我会很高兴这样做。

2 个答案:

答案 0 :(得分:2)

ObjectOutputStream使用java serialization将对象写入流中。

要使目标对象(Triangle)互操作,您需要将标记接口java.io.Serializable添加到其中。然后可以使用内置的java序列化框架编写三角形对象。

所以,进入Triangle

public class Triangle implements Serializable

答案 1 :(得分:1)

 java.io.NotSerializableException

这意味着Triangle类不是Serializable,因此会抛出该错误。

每次要将对象写入ObjectOutputStream时,都需要实现Serializable接口。

解决方案:

使您的Triangle类实现Serializable:

public class Triangle implements Serializable