# Dateipfad in den JFileChooser aus Textdatei einlesen



## Balbes (25. Feb 2010)

Hallo!
Habe folgendes Probem. Ich möchte, dass mein Programm (Editor) immer, wenn es eine Datei öffnet, den Ordner, wo diese Datei lag, speichert, um beim nächsten Mal, wenn eine Datei geöffnet werden muss, der JFileChooser automatisch in diesen Ordner geht.

Ich gehe folgendermaßen vor:

Ich speichere den Pfad zu dem Ordner in einer Textdatei, es läuft gut. 
Es muss z.B so ein Pfad sein: *C:\Dokumente und Einstellungen\ELEK301\Railcab* und es ist so tätsachlich in der Datei, wenn ich sie mit einem einfachen Texteditor öffne.

Dann, vor dem nächsten Starten von JFileChooser lese ich den Pfad aus der Datei in eine String-Variable ein, sagen wir _lastPath_ und sie ist auch ok. Ich prüfe es mit *System.out.println(lastPath);* und es gibt *C:\Dokumente und Einstellungen\ELEK301\Railcab* aus.

Dann starte ich den JFileChooser :

```
JFileChooser chooser = new JFileChooser(lastPath);
```

und es läuft nicht! Wenn ich direkt den Pfad angebe:

```
JFileChooser chooser = new JFileChooser("C:\\Dokumente und Einstellungen\\ELEK301\\Railcab");
```

funktioniert es. Wo liegt der Fehler?


----------



## Sempah (25. Feb 2010)

Zwischen 
	
	
	
	





```
C:\Dokumente und Einstellungen\ELEK301\Railcab
```
 als String- und 
	
	
	
	





```
C:\Dokumente und Einstellungen\ELEK301\Railcab
```
 als File-Objekt besteht auch ein Unterschied.

Wenn du es als String speicherst, versuch doch mal ein str.replace mit \ durch \\ o.Ä.


----------



## faetzminator (25. Feb 2010)

@Sempah, was für ein Unterschied? Er hat ein Mal den String direkt angegeben, und ein Mal den String aus einer Datei ausgelesen. [c]\\[/c] wird lediglich verwendet, um in einem String in Java [c]\[/c] (als Escapezeichen) zu escapen.


----------



## Balbes (25. Feb 2010)

bei der Methode

```
lastPath.replaceAll("\\", "\\\\");
```

kommt der Fehler:


java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
	at java.util.regex.Pattern.error(Unknown Source)
	at java.util.regex.Pattern.compile(Unknown Source)
	at java.util.regex.Pattern.<init>(Unknown Source)
	at java.util.regex.Pattern.compile(Unknown Source)
.
.
.


----------



## faetzminator (25. Feb 2010)

Wenn, dann wärs [c]lastPath.replaceAll("\\\\", "\\\\");[/c]. Dies würde \ durch \\ ersetzen. Der \ muss in Regex und Java escaped werden, darum 4x \.


----------



## Tomate_Salat (25. Feb 2010)

ich glaub ich weis wieso:

du liest bestimmt noch das [c]\n[/c] mit ein. Dann ist der Pfad nicht mehr gültig und er setzt den standart. 

*Edit:*
Also entweder du setzt das [c].trim();[/c] beim initalisieren: 

```
File lastpath = new File( reader.readLine().trim() );
```

oder beim aufruf:

```
JFileChooser ch = new JFileChooser( lastpath.getAbsolutePath().trim() );
```

ich empfehle ersteres

So sollte es dann eigentl. funktionieren


----------



## Sempah (25. Feb 2010)

war mein Logik-Fehler. Poste mal deinen kompl. Code. Sieht sehr merkwürdig aus.


----------



## Balbes (25. Feb 2010)

es lag wirklich an der Nicht-Benutzung von trim() !!! Danke!!


----------

