Objekte speichern mit JFileChooser

wyldstyle

Aktives Mitglied
Hi, ich versuche grad mein Programm etwas 'aufzupeppen'. Das Programm beinhaltet eine Speicherfunktion welches einfach das komplette Programm über Serialisierung speichert. Bisher wird dazu einfach eine Datei im selebn Verezcihnis abgelegt, indem auch das Programm (jar) liegt.
Ich wollte das ganze jetzt so abändern, dass man auswählen kann wo man die Datei speichern möchte.
Ich nutze dazu den JFileChooser aber ich denke ich habe einen Logikfehler im Code.

Bisher lief die Speicherung mit:
Code:
datenStrom = new FileOutputStream(datum);
				objektStrom = new ObjectOutputStream(datenStrom);
				objektStrom.writeObject(this);


Angenommen der Nutzer wählt jetzt einen Zielornder aus - und klickt auf 'speichern' ...
wie bekomme ich den objektStrom dazu, die Datei genau unter dem Pfad abzulegen?

So sieht der Code bisher aus:

Code:
private void erstellespeichernDialog() {
		FileOutputStream datenStrom;
		ObjectOutputStream objektStrom;
		tischneuzeichnen();
		System.out.println("Speichervorgang starten");
		Date date = new Date();
		String datum = date.toString()+".codeem";
		datum = datum.replaceAll(" ", "");
		datum = datum.replaceAll(":", ".");
		datum = datum.replaceAll("CEST", "");
		
		
		String name;
		speicherauswahl.setDialogTitle(" Wo m\u00F6chtest du speichern?");
		speicherauswahl.setFileFilter(new FileFilter() {
			@Override
			public boolean accept(File f) {
				return f.isDirectory()
						|| f.getName().toLowerCase().endsWith(".codeem");
			}
			@Override
			public String getDescription() {
				return "Texas Code'em Speicherst\u00E4nde";
			}
		});
		
		int zustand = speicherauswahl.showSaveDialog(null);
		speicherauswahl.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		speicherauswahl.getCurrentDirectory();
		if (zustand == JFileChooser.APPROVE_OPTION) {
			try{
				datenStrom = new FileOutputStream(datum);
				objektStrom = new ObjectOutputStream(datenStrom);
				objektStrom.writeObject(this);
				objektStrom.close();
				// tisch.setSpielverlauf("Speicherstand "+ datum +" angelegt.");
			}catch (Exception e){
				System.out.println("Fehler beim Speichervorgang, ABBRUCH");
				e.printStackTrace();
			}
		}

	}

Ich denke nicht, dass das Problem sonderlich komplex ist aber wie immer - bekomm ichs irgendwie nicht hin, hoffe ihr könnt mir da n Hinweis geben!

Grüße,

wyldstyle
 

eRaaaa

Top Contributor
getSelectedFile ?
p.s: So Datums-Strings muss man nicht per Hand selbst zusammenbasteln:
Java:
	SimpleDateFormat sdf = new SimpleDateFormat("EMMMddHH.mm.ss");
	System.out.println(sdf.format(new Date()));
/edit: ach du willst nur dne Ordner auswählen, naja, dann ignoriere den Rest :D
Wenn du das Datum weiterhin hinzufügen willst, musst du halt ein neues File-Objekt erstellen und das Datum dran hängen.

FileOutputStream hat dann auch diesen Konstruktor: FileOutputStream (Java Platform SE 6)
 
Zuletzt bearbeitet:

wyldstyle

Aktives Mitglied
Steig da nicht durch - liefert mir getSelectedFile nen Pfad zurück? Und wenn ja - wie weise ich den Outputstream an in das Verzeichnis zu schreiben!?
 

eRaaaa

Top Contributor
Also ich bin da bei dir gerade selbst etwas durcheinander gekommen, denn dein Filter, in Zusammenhang mit setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); ist etwas merkwürdig..aber okay...

Also so wie ich dich nun verstandne habe, suchst du in etwa so etwas:
(Beispiel ohne gewähr *g*)
Java:
	public static void main(String[] args) throws Exception {
		SimpleDateFormat sdf = new SimpleDateFormat("EMMMddHH.mm.ss");
		JFileChooser chooser = new JFileChooser();
		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		chooser.showOpenDialog(null);
		File f = chooser.getSelectedFile();
		f = new File(f.getAbsolutePath() + File.separatorChar
				+ sdf.format(new Date()) + ".codeem");
		datenStrom = new FileOutputStream(f);
		//.....
	}
 

wyldstyle

Aktives Mitglied
Noch nicht ganz - geht aber in die korrekte Richtung.

Ich hatte es jetzt mal so versucht:

Java:
                FileOutputStream datenStrom;
                ObjectOutputStream objektStrom;
	        SimpleDateFormat sdf = new SimpleDateFormat("EMMMddHH.mm.ss");
	        JFileChooser chooser = new JFileChooser();
	        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
	        chooser.showOpenDialog(null);
	        File f = chooser.getSelectedFile();
	        f = new File(f.getAbsolutePath() + File.separatorChar
	                + sdf.format(new Date()) + ".codeem");
	        try {
	        	 datenStrom = new FileOutputStream(f);
	        	 objektStrom = new ObjectOutputStream(datenStrom);
				 objektStrom.writeObject(this);
				 objektStrom.close();
				 tisch.setSpielverlauf("Speicherstand "+ sdf +" angelegt.");
	        }catch (Exception e){
	        	System.out.println("Fehler beim Speichervorgang, ABBRUCH");
				e.printStackTrace();
	        }

Ich will halt das aktuelle Objekt speichern - nichts laden. Also quasi dem datenstrom sagen wohin das ganze gehen soll ( in das verzeichnis was im Filechooser gewählt wurde).

Ich find den FileChooser irgendwie verwirrend!
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Ich will halt das aktuelle Objekt speichern - nichts laden. Also quasi dem datenstrom sagen wohin das ganze gehen soll ( in das verzeichnis was im Filechooser gewählt wurde).

also jetzt kann ich dir gar nicht mehr folgen...wo wird da etwas geladen? Und was genau geht jetzt an dem Code nicht? :autsch:
Der FileChooser an sich hat nichts mit Speichern oder ähnliches zu tun, der macht quasi nichts, ausser so wie der Name schon sagt, einen Auswahldialog zur Verfügung zu stellen damit der Benutzer eine Datei/Ordner auswählen kann, sonst nichts! Ums Speichern und laden musst du dich selber kümmern...(und das macht doch der Code oben oder etwa nicht? )
 

wyldstyle

Aktives Mitglied
Hi, ja es klapt mittlerweile soweit, allerdings ist da noch eine Kleinigkeit. Kann man das Feld wo man 'Dateiname' eingibt, irgendwie deaktivieren? Da kann man sonst irgendwas sinnloses eingeben und bekommt dann ne exception!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
J Objekte binär speichern Allgemeine Java-Themen 10
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
O binärer Suchbaum mit client server., objekte speichern. Allgemeine Java-Themen 2
M Objekte Dauerhaft speichern und evtl. auch ändern? Allgemeine Java-Themen 6
M Objekte in Array speichern Allgemeine Java-Themen 19
M Objekte speichern? Allgemeine Java-Themen 2
Chris_1980 Bilder u. Objekte in JarArchiv speichern Allgemeine Java-Themen 2
Q Speichern & Wiederherstellen von Daten (-objekte) Allgemeine Java-Themen 7
G Objekte verschlüsselt in Dateien speichern und laden Allgemeine Java-Themen 2
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2
S XML in Objekte wandeln. Euer Rat? Allgemeine Java-Themen 12
G Objekte serialisieren Allgemeine Java-Themen 2
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
S Objekte mit Arrays Allgemeine Java-Themen 9
S erzeugte objekte zählen Allgemeine Java-Themen 3
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben