2010-05-11 4 views
10

J'ai un Hashtable<string,string>, dans mon programme je veux enregistrer les valeurs de la Hashtable à traiter plus tard.Pouvons-nous écrire une Hashtable dans un fichier?

Ma question est: pouvons-nous écrire l'objet Hastable dans un fichier? Si oui, comment pouvons-nous charger ce fichier plus tard?

Répondre

9

Oui, en utilisant la sérialisation binaire (ObjectOutputStream):

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

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

Ensuite, vous pouvez le lire en utilisant ObjectInputStream

Les objets que vous avez à l'intérieur du Hashtable (ou mieux - HashMap) doivent mettre en œuvre Serializable


Si vous souhaitez stocker le Hashtable dans un format lisible par l'homme, vous pouvez utiliser java.beans.XMLEncoder:

FileOutputStream fos = new FileOutputStream("tmp.xml"); 
XMLEncoder e = new XMLEncoder(fos); 
e.writeObject(yourHashTable); 
e.close(); 
+0

Merci votre réponse! Je question mon hastable Comment puis-je écrire dans le fichier xml comme //// //// tiendv

+0

Vous pouvez utiliser quelque chose comme XStream ou JAXB pour personnaliser le fichier XML, mais c'est trop de mal de tête. Je resterais avec XMLEncoder, ou avec la solution 'Properties' proposée. – Bozho

5

Je ne sais pas votre application, mais vous pouvez jeter un oeil à la Properties class. (Il étend hashmap.)

Cette classe vous offre

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. 

The tutorial est tout à fait éducatif aussi.

1

Si vous voulez pouvoir facilement éditer la carte une fois celle-ci écrite, vous pouvez jeter un coup d'œil à jYaml. Il vous permet d'écrire facilement la carte dans un fichier au format Yaml, ce qui signifie qu'il est facile à lire et à éditer.

0

Vous pouvez également utiliser MapDB et il sauver le HashMap pour vous une fois que vous faites un put et un commit. De cette façon, si le programme se bloque, les valeurs seront toujours conservées.

Questions connexes