我正在使用 Java 来绘制一些巨大的图表。我有一个包含此映射的个性化类对象,它由多个哈希图组成,并调用其他也由各种对象组成的个性化类。
我的问题是,每次我运行它进行测试时,大约需要 5 分钟来映射所有内容,然后对于每个节点可能需要 1 到 10 分钟来进行一些计算。每次我必须修复代码上的某些内容时,我都必须经历那个等待时间。
所以我的问题
有什么方法可以将主对象类(由几个原始和非原始对象组成)存储为二进制文件,我可以保存一次并从那时起读取?
解析将如何发生?
我已经开始研究 FileOutputStream/ObjectOutputStream 和 FileInputStream/ObjectInputStream,但我不确定我是否正确理解它们是否适合这种情况。
任何意见和建议将不胜感激。
我附上了我尝试用来保存类对象的代码。
FileOutputStream fos = new FileOutputStream("tbox.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tboxObject);
oos.flush();
oos.close();
这是第一次运行,之后我将代码交换为:
FileInputStream fis = new FileInputStream("tbox.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
tboxObject savedTboxObject = (tboxObject) ois.readObject();
我要补充一点,这些对象不仅由整数和字符串组成,还由哈希图、列表和其他复杂对象的数组组成。
来自 java 文档:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(yourObject);
oos.close();
只需确保图中的所有对象都实现可序列化。
是的,您可以使用OutputStream/InputStream类序列化并保存对象。但是,当您修改类(例如添加/删除/修改实例变量)然后尝试读取以前保存的文件时,请务必小心。
Serialize可能就是您想要的。在类中实现可串行接口,然后使用 ObjectOutputStream 将对象写入文件。