Можем ли мы написать Hashtable в файл?

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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