我目前正在编写一个程序,处理由 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/