2010-05-11 5 views
10

Ich habe eine Hashtable<string,string>, in meinem Programm möchte ich die Werte der Hashtable aufzeichnen, um später zu verarbeiten.Können wir eine Hashtable in eine Datei schreiben?

Meine Frage ist: Können wir Objekt Hastable in eine Datei schreiben? Wenn ja, wie können wir diese Datei später laden?

Antwort

9

Ja, über binäre Serialisierung (ObjectOutputStream):

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

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

Dann können Sie es ObjectInputStream

Die Objekte mit lesen, die Sie in die setzen Hashtable (oder besser - HashMap) haben zu implementieren Serializable


Wenn Sie diespeichern möchtenin einem für Menschen lesbaren Format können Sie java.beans.XMLEncoder verwenden:

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

Vielen Dank für Ihre Antwort! Ich habe Frage meine hastable , wie ich in der Datei xml schreiben kann wie //// //// tiendv

+0

Sie können etwas wie XStream oder JAXB verwenden, um die XML anzupassen, aber es ist zu viel Kopfschmerzen. Ich würde bei XMLEncoder oder mit der vorgeschlagenen "Properties" -Lösung bleiben. – Bozho

5

nicht über Ihre spezifische Anwendung Sie wissen, aber Sie könnten einen Blick auf die Properties class haben wollen. (Es erstreckt sich hashmap.)

Diese Klasse liefert Ihnen

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 ist auch sehr lehrreich.

1

Wenn Sie in der Lage sein möchten, die Karte einfach zu bearbeiten, sobald sie ausgeschrieben ist, möchten Sie vielleicht einen Blick auf jYaml werfen. Sie können die Map einfach in eine Yaml-formatierte Datei schreiben, was bedeutet, dass sie einfach zu lesen und zu bearbeiten ist.

0

Sie könnten auch MapDB verwenden und es wird die HashMap für Sie speichern, nachdem Sie einen put und commit tun. Wenn das Programm abstürzt, bleiben die Werte auf diese Weise erhalten.

Verwandte Themen