У меня есть Hashtable<string,string>
, в моей программе я хочу записать значения Hashtable для обработки позже.
Мой вопрос: можем ли мы написать объект Hastable в файл? Если да, как мы можем позже загрузить этот файл?
У меня есть Hashtable<string,string>
, в моей программе я хочу записать значения Hashtable для обработки позже.
Мой вопрос: можем ли мы написать объект Hastable в файл? Если да, как мы можем позже загрузить этот файл?
Да, используя двоичную сериализацию (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();
Не знаете о вашем конкретном приложении, но вы можете захотеть взглянуть на класс свойств. (Он расширяет 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, Это позволяет легко записывать карту в файл, отформатированный в Ямле, что позволяет легко читать и редактировать.
Вы также можете использовать MapDB, и он сохранит вам HashMap после того, как вы сделаете put
и a commit
.
Таким образом, если программа выйдет из строя, значения будут сохраняться.