Java - 从文本文件中读取对象

时间:2012-11-16 16:38:03

标签: java file text io

我有一个Java程序,有几个类,它们是:

i)形状 ii)广场 iii)矩形 iv)圈子 v)三角形 vi)绘制画布 vii)申请

方形,矩形,圆形和三角形都继承自 Shape

现在,在 Drawing Canvas 类中,我有两个方法,一个用于将Shape类型的对象写入文件,另一个用于从文件中读取对象。

这是代码:

保存到文件的方法完美无缺。但是,我在从文件中读取对象并将它们附加到Shapes ArrayList时遇到问题。

实际上,应用程序给我的错误是 java.lang.String无法强制转换为shapes_assignment.Shape

如何读取存储在文本文件中的文本并使用它再次重新创建对象?谢谢:))

3 个答案:

答案 0 :(得分:2)

您需要编写一个读取器,它将获取输入字符串,并从中创建一个形状。这是一个简单的示例,使用Java Date class向您展示这是如何工作的。没有你的Shape构造函数,我不能为你编写你的Shape。

Date today=new Date();
long var_to_write=today.getTime();

//Save this in to a file, then read it out as long var_in_file

Date previousTime=new Date(var_in_file);

答案 1 :(得分:0)

您正在将Array添加到ArrayList中。

            while(input.hasNext())
            {
                temp.add(input.next());
            }

            Shapes.add((Shape)temp.get(i));

这里你试图强制 字符串(temp.get(i)将返回一个字符串)到形状类型,这是导致 ClassCaseException

在从文件中读取并使用Shape实例填充ArrayList(temp)后创建一个Shape实例。

      List<Shape> temp = new ArrayList<Shape>();
      //read from the scanner and make an Shape object. 
       Shape shape = new Shape(your arguments to the Shape cons);
       now, while adding into shapes you wont need a case, as you made yourself sure that your ArrayList would only accept Shape

       shapes(temp.get(i));

答案 2 :(得分:0)

您应该使用ObjectOutputStream来编写形状列表,并从ObjectInputStream中检索它们:

out.writeObject(Shapes);

Shapes = (ArrayList)in.readObject();

假设ShapesArrayList