Как записать объект класса в файл bin - PullRequest
3 голосов
/ 30 июня 2011


Я использую Java для отображения огромного графика. У меня есть персонализированный объект класса, который имеет эту карту, он состоит из нескольких hasmaps и вызывает другие персонализированные классы, которые также сделаны из объектов varios.

Моя проблема в том, что каждый раз, когда я запускаю это для выполнения тестов, требуется около 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();

Я добавлю, что это объекты, состоящие не только из целых чисел и строк, но и из хеш-карт, списков и массивов других, также сложных объектов.

Ответы [ 3 ]

0 голосов
/ 30 июня 2011

Сериализация , вероятно, то, что вы хотите.Реализуйте интерфейс serialiable в своем классе, а затем используйте ObjectOutputStream для записи объекта в файл.

0 голосов
/ 30 июня 2011

Да, вы можете сериализовать и сохранить объекты, используя классы OutputStream / InputStream. Однако, будьте внимательны при изменении класса (например, добавьте / удалите / измените переменную экземпляра), а затем попытайтесь прочитать ранее сохраненный файл.

0 голосов
/ 30 июня 2011

Из документов Java :

    FileOutputStream fos = new FileOutputStream("t.tmp");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(yourObject);
    oos.close();

Просто убедитесь, что все объекты в графе реализуют сериализуемый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...