【问题标题】:JAVA - how to save array of Shape to file on desktop?JAVA - 如何将形状数组保存到桌面上的文件?
【发布时间】:2013-04-24 12:59:12
【问题描述】:

我有一个 Shape 数组:

Shape[] myshape = new Shape[13];

如何将其保存到文件中?

我找到了一些代码:

String fileName = "file.test";

BufferedOutputStream bs = null;

try {
    FileOutputStream fs = new FileOutputStream(new File(fileName));
    bs = new BufferedOutputStream(fs);
    bs.write(byte_array);
    bs.close();
    bs = null;
} catch (Exception e) {
    e.printStackTrace()
}

if (bs != null) try { bs.close(); } catch (Exception e) {}

但是代码只适用于字节数组,谁能帮帮我?

【问题讨论】:

标签: java shape


【解决方案1】:

保存对象有很多选择,原生 Java 序列化就是其中之一。如果不想使用序列化,可以查看XStream,它将 POJO 写成 XML。

优点是它会写出人类可读的 XML,并且 oyu 不必为您的对象实现特定的接口。缺点是XML比较冗长。

【讨论】:

    【解决方案2】:

    或者您可以使用序列化来保存整个对象。

    查看javadoc:

    http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html

    这里有一个来自 stackoverflow 的示例:

    serialization/deserialization mechanism

    【讨论】:

      【解决方案3】:

      试试这样:

      Shape[] myshape = new Shape[13];
      
      // populate array
      
      // writing array to disk
      FileOutputStream f_out = new FileOutputStream("C:\myarray.data");
      ObjectOutputStream obj_out = new ObjectOutputStream (f_out);
      obj_out.writeObject(array);
      
      // reading array from disk
      FileInputStream f_in = new FileInputStream("C:\myarray.data");
      ObjectInputStream obj_in = new ObjectInputStream (f_in);
      Shape[] tmp_array = (Shape[])obj_in.readObject();
      

      【讨论】:

      • 编码没问题,但如果我从 myarray.data 读取到 tmp_array,tmp_array 为空(NULL)...
      • 谢谢@JaLe29 错过了声明。
      • 现在,它工作了,很好! THX :-)
      【解决方案4】:

      您必须对形状进行序列化才能将它们转换为字节数组。 我不认为 Shape 实现了可序列化,所以你自己来做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多