Можем ли мы записать Hashtable в файл? - PullRequest
10 голосов
/ 11 мая 2010

У меня есть Hashtable<string,string>, в моей программе я хочу записать значения Hashtable для последующей обработки.

Мой вопрос: можем ли мы записать объект Hastable в файл? Если так, как мы можем позже загрузить этот файл?

Ответы [ 4 ]

9 голосов
/ 11 мая 2010

Да, с использованием двоичной сериализации (ObjectOutputStream):

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

oos.writeObject(yourHashTable);
oos.close();

Тогда вы можете прочитать его, используя ObjectInputStream

Объекты, которые вы помещаете внутрь Hashtable (или лучше - HashMap), должны реализовывать Serializable


Если вы хотите сохранить Hashtable в удобочитаемом формате, вы можете использовать java.beans.XMLEncoder:

FileOutputStream fos = new FileOutputStream("tmp.xml");
XMLEncoder e = new XMLEncoder(fos);
e.writeObject(yourHashTable);
e.close();
5 голосов
/ 11 мая 2010

Не знаю о вашем конкретном приложении, но вы можете взглянуть на класс Properties . (Расширяет hashmap.)

Этот класс предоставляет вам

void  load(InputStream inStream)
     Reads a property list (key and element pairs) from the input byte stream.
void  load(Reader reader)
     Reads a property list (key and element pairs) from the input character stream in a simple line-oriented format.
void  loadFromXML(InputStream in)
     Loads all of the properties represented by the XML document on the specified input stream into this properties table.
void  store(Writer writer, String comments)
      Writes this property list (key and element pairs) in this Properties table to the output character stream in a format suitable for using the load(Reader) method.
void  storeToXML(OutputStream os, String comment)
      Emits an XML document representing all of the properties contained in this table.

Учебное пособие также весьма познавательно.

1 голос
/ 11 мая 2010

Если вы хотите иметь возможность легко редактировать карту после ее написания, вы можете взглянуть на jYaml . Он позволяет легко записать карту в файл в формате Yaml, что означает, что ее легко читать и редактировать.

0 голосов
/ 04 июля 2014

Вы также можете использовать MapDB , и он сохранит для вас HashMap после того, как вы сделаете put и commit. Таким образом, в случае сбоя программы значения будут сохранены.

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