我正在开发一个程序,它应该将它的输出(已创建的三角形)写入名为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个类,但是这个特殊类是处理将输出写入文件的类,但是如果我需要包含其余类,请告诉我,我会很高兴这样做。
答案 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