Speichern HashMap Eigenschaften zu einer properties-Datei, und laden diese Eigenschaften zurück an die HashMap
So, ich starte in ein casting-problem mit speichern von HashMap
Eigenschaften zu einem Properties
- Datei, weil der Schlüssel des HashMap
ist ein Objekt, das nicht umgewandelt werden java.lang.String
da die Eigenschaften werden muss (String, String)
und meine HashMap
ist (Object, Long)
.
Ich will einfach nur speichern Sie die Inhalte der HashMap
zu einer Datei, so kann ich die Last auf den Inhalt zurück in die HashMap
das nächste mal, wenn das Programm lief.
Ich gegangen durch eine übermäßige Menge von wertlosen versuche, um zu versuchen zu füllen HashMaps
mit Gegenständen, die Sie enthalten, bevor Sie gerettet wurden. Ich habe versucht zu denken, der eine einfache Möglichkeit, konvertieren Sie das Objekt in eine Zeichenfolge, die ich tun kann, aber da Properties
und HashMaps
sind nicht indiziert, ich kann es nicht ändern diese Zeichenfolgen zurück zu dem Objekt, das Sie brauchen werden. Wie dies zu erreichen?
Hier ist, was ich versuche zu tun:
public File savedHashMaps = new File("SavedHashMaps.list");
//in my case, the object is 'Location' from an implemented API
public Map<Location, Long> map = new HashMap<Location, Long>();
public void saveMaps() {
Properties prop = new Properties();
try {
if (!map.isEmpty()) {
prop.load(new FileInputStream(savedHashMaps));
prop.putAll(map);
prop.store(new FileOutputStream(savedHashMaps), null);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void loadMaps() {
Properties prop = new Properties();
try {
prop.load(new FileInputStream(savedHashMaps));
if (!prop.isEmpty()) {
map.putAll((Map)prop);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Map<Location, Long>
). Sie sollten kommen mit Ihren eigenen Daten-Datei-format, die zu Ihren Daten werden gespeichert/abgerufen werden.Sie könnten besser mit der
ObjectInputStream
und ObjectOutputStream
für diesen Zweck eher als die Eigenschaften format, es sei denn, Sie erwarten, dass ein anderes Programm zum Lesen/schreiben.InformationsquelleAutor Jon McPherson | 2012-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit einem
ObjectInput/OutputStream
Dies ist aus dem Gedächtnis, also sorry für die Fehler, aber speichern und laden Sie alle Ihre Lage, Lange mappings. Auch als Hinweis, die Lage Klasse implementieren muss
Serializable
(oder eine super-Klasse, die implementiert es)(Es ist ein marker-interface (Siehe java.dzone.com/articles/marker-interfaces-java), so dass Sie nur hinzufügenimplements Serializable
).Sie hätte, um Ihre eigene Methode zum speichern/abrufen von Objekten. Wie in XML. Die Umsetzung, das würde davon abhängen, den Inhalt der Datei. Könnte es möglich sein, zu implementieren, verwendet die [Reflection-API][docs.oracle.com/javase/tutorial/reflect/index.html] so dass Sie sparen können jedes Objekt, aber das funktioniert nicht in applets.
Ich endete damit, ein serializedLocation Klasse, die gerade implementiert serializable und behandelt die übergänge zu und von den standard-Location-Objekt und den Location-Objekt serialisiert. Ich habe es zu funktionieren! vielen Dank für Ihre Hilfe!
Wunderbar. Froh bekamen Sie es das arbeiten.
InformationsquelleAutor Lee