Java инициализировать объект из файла

1

В настоящее время я пишу программу, которая занимается графиками, созданными библиотекой 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);
...

которые являются постоянными графами, связанными с картами улиц, которые я даю как файлы. Прямо сейчас у меня есть все мои графики, объявленные в моем основном методе, и просто ссылку на график, который я хочу, когда карта загружена. То, что я хотел бы сделать, это иметь другой файл в паре с каждой картой (например, map1.map и map1.graph), так что, когда я загружаю карту из файла, я также могу загрузить график:

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

где mapName - префикс имени файла и не должен хранить его в моем исходном коде. Возможно ли это сделать в java, и если да, то как я могу создать файлы и загрузить их? Можно ли также сделать это с помощью общего объекта?

Теги:
file-io
initialization
import
jgrapht

1 ответ

0
Лучший ответ

Один из вариантов - сериализовать ваши объекты в 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;

Это упрощенный способ сделать это, но он работает. Надеюсь, поможет.

  • 0
    Так что просто для пояснения, я использую блок «Сериализация» для создания файлов XML и блок «Десериализация» для назначения моей карты или графика переменной состояния из сохраненного файла XML?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню