java从文件初始化对象

标签 java file-io import initialization jgrapht

我目前正在编写一个程序,处理由 jgrapht 库创建的图形。我有多个以下形式的图表:

UndirectedGraph <Integer, DefaultEdge> g_x = new SimpleGraph<Integer, DefaultEdge (DefaultEdge.class);
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addEdge(1, 2);
g.addEdge(2, 4);
...

这是与我以文件形式提供的街道 map 相关的常量图。现在,我在主方法中声明了所有图表,并且在加载 map 时仅引用我想要的图表。我想做的是让另一个文件与每个 map (即map1.map和map1.graph)配对,这样当我从文件加载 map 时,我也可以加载图表,如下所示:

map = loadMap(mapName);
g_x = loadGraph(mapName);

其中mapName是文件名前缀,不必将其存储在我的源代码中。是否可以在 java 中执行此操作,如果可以,我将如何创建文件并加载它们?是否也可以使用通用对象来做到这一点?

最佳答案

一种选择是将对象序列化为 xml 或 json(如果您确实需要,可以将 .xml 更改为 .map)。然后,您可以在代码中为要加载的每个对象打开 xml。

序列化:

File file = new File(**filename**);
FileOutputStream out = new FileOutputStream(file);
XStream xmlStream = new XStream(new DomDriver());
out.write(xmlStream.toXML(**ObjectToSave**).getBytes());
out.close();

反序列化:

 try {
     XStream xmlStream = new XStream(new DomDriver());
     state = (**ClassNameYouWishToSave**) xmlStream.fromXML(new FileInputStream(**filename**));
 } catch(IOException e) { e.printStackTrace(); }

您将需要这些导入:

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

这是一种简单的方法,但它确实有效。希望对您有所帮助。

关于java从文件初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621581/

相关文章:

java - 如何使用 Java 向文件添加内容

import - Isabelle error Cannot update finished theory "HOL.Finite_Set"是什么意思?

java - CRUDRepository 中的 Update 或 saveorUpdate

java - 如何使用 Java 注释插入一些样板代码,就像使用 C 宏一样?

java - 使用选项作为参数运行命令行

java - 计算文件的平均值

perl - 如何将多行处理/存储到从 perl 文件读取的单个字段中?

c# - 统一导入 WWW 后如何更改 Sprite 的每单位像素?

php - 将向前/向后导航插入到 wordpress 主题的帖子/投资组合部分的标题中

java - 检测新的 SMS/MMS 消息 Android 应用程序