Можем ли мы записать хэш-таблицу в файл?

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

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

4 ответов


Да, используя двоичную сериализацию (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();

Не знаю о вашем конкретном приложении, но вы можете взглянуть на 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.

учебник довольно познавательно также.


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


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