У меня есть a Hashtable<string,string>
, в моей программе я хочу записать значения Хеш-таблицы для обработки позже.
Мой вопрос: мы можем записать объектный 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) Считывает список свойств (пары ключей и элементов) из входного байтового потока. void load (Reader reader) Считывает список свойств (пары ключей и элементов) из потока входных символов в простом строчно-ориентированном формате. void loadFromXML (InputStream in) Загружает все свойства, представленные XML-документом в указанном входном потоке, в эту таблицу свойств. void store (Writer writer, String comments) Записывает этот список свойств (пары ключей и элементов) в эту таблицу свойств. Таблица свойств в выходной поток символов в формате, подходящем для использования метода load (Reader). void storeToXML (OutputStream os, String comment) Испускает XML-документ, представляющий все свойства, содержащиеся в эта таблица.
Учебник также весьма познавательный.
Если вы хотите иметь возможность легко редактировать карту после того, как она записана, вы можете взглянуть на jYaml . Он позволяет легко записывать карту в файл в формате Yaml, что означает, что его легко читать и редактировать.