0

我有形状数组:

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) {}

但是代码仅适用于字节数组,任何人都可以帮助我吗?

4

4 回答 4

1

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

查看javadoc:

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

这里是stackoverflow的一个例子:

序列化/反序列化机制

于 2013-04-24T13:09:03.447 回答
1

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

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

于 2013-04-24T13:10:19.643 回答
0

试试这样:

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();
于 2013-04-24T13:05:54.013 回答
0

您必须序列化您的形状以将它们转换为字节数组。我不认为 Shape 实现可序列化,所以你会自己做。

于 2013-04-24T13:08:49.750 回答