JFileChooser Datei-Pfad auf Netzwerkfreigaben

Status
Nicht offen für weitere Antworten.

stevens

Mitglied
Hallo. Ich habe jetzt knapp 2 stunden Googlen hinter mir und auch die Suchfunktion des Forums hilft mir leider nicht weiter. Darum hoffe ich mal, jemand kann mir helfen:

Es geht um ein Programm, mit welchem Dateien geöffnet werden, um diese dann weiter zu verarbeiten. Dazu wird der relative Pfad der Datei benötigt. Das Programm, als auch die Dateien liegen üblicherweise auf einem verbundenen Netzlaufwerk. Und jetzt kommt das Problem, welches es mir nicht ermöglicht, den Relativen Pfad aus dem aktuellen Pfad und dem Pfad der mit JFileChooser geöffneten Datei zusammenzubasteln:


System.getProperty("user.dir") gibt artig folgendes zurück:
"U:\daten\javaproject\app\com.beispiel.filetool"

JFileChooser gibt aber beim auswählen einer Datei folgenden String zurück:
"\\SERVER01\stevens\daten\javaprojekt\files\filebeispiel.xml"

Ergo kann ich die beiden Pfade nicht verwenden, um mir den relativen Pfad zurechtzuschustern. Immerhin könnte beispielsweise jemand die Freigabe auf ein anderes Verzeichnis mappen. Es ist mir also nicht möglich, den String von Vorne her zu überprüfen und gleiche Verzeichnisse abzutrennen und dazwischenliegende durch "../" zu ersetzen, um den relativen Pfad zu ermitteln.

Weiss jemand einen Ausweg aus meinem Dilemma? Einen Workaround für das File-Chooser Problem? Oder eventuell einen anderen Algorithmus zur Ermittlung des relativen Pfades?

Bin um jede Hilfe dankbar!
 
Hi,

hast du schon mit den Methoden "getAbsolutePath()" und "getCanonicalPath()" aus der Klasse File experimentiert ?

Gruß
Mag1c
 
Jops. Wenn ich mit dem von JFileChooser zurückgelieferten String ein neues Objekt File instanziere und von diesem die besagten Methoden aufrufe, bleibt er weiterhin bei Absoluten Netzwerkpfad.
 
Ergo kann ich die beiden Pfade nicht verwenden, um mir den relativen Pfad zurechtzuschustern. Immerhin könnte beispielsweise jemand die Freigabe auf ein anderes Verzeichnis mappen. Es ist mir also nicht möglich, den String von Vorne her zu überprüfen und gleiche Verzeichnisse abzutrennen und dazwischenliegende durch "../" zu ersetzen, um den relativen Pfad zu ermitteln.
Wenn jemand die Freigabe ändert dann hilft dir doch ein relativer Pfad auch nichts, ein solcher müsste ja IMMER über den \\HOST\freigabe\ usw. laufen

wie soll den ein relativer Pfad aussehen, der in einer Freigabe landet??
 
Bleiglanz hat gesagt.:
Wenn jemand die Freigabe ändert dann hilft dir doch ein relativer Pfad auch nichts, ein solcher müsste ja IMMER über den \\HOST\freigabe\ usw. laufen

wie soll den ein relativer Pfad aussehen, der in einer Freigabe landet??

Also wenn sich die zu öffnende Datei auf einer gänzlich anderen Freigabe befindet als das Programm, entspricht der relative Pfad zur Datei dem absoluten Pfad. Durfte jetzt auch grad feststellen, dass parse() von DocumentBuilder offenbar ein Problem damit hat, Dateien zu öffnen, wenn man den Pfad zur datei nach dem Shema \\HOST\freigabe angibt. Relativer Pfad oder Laufwerksbuchstaben machen hingegen keine Mühe.

Grmbl...
 
Hi

ich weiß nicht, ob das am Ende zu einem Ergebnis führt und habe auch grad keine
Zeit, das auszuprobieren. In der Klasse FileSystemView gibt es noch ne Menge
Möglichkeiten, was auszuprobieren.

Gruß
Mag1c
 
Eine wirkliche Lösung habe ich leider immer noch keine gefunden, aber zumindest konnte ich das Problem ein bisschen eingrenzen:

Der Pfad wird von JFileChooser (und übrigens auch in AWTs Equivalent FileDialog) nur dann in der Form "\\SERVER01\stevens\" anstelle von "U:\" angegeben, wenn man im Auswahlmenü über "My Documents" bzw "Eigene Dokumente" auf das verbundene Netzlaufwerk zugreift. Geht man hingegen über die Liste der Laufwerke auf das Laufwerk, wird der Pfad mit Laufwerkbuchstabe gebildet.

Das bringt eine Lösung des Problems schonmal langsam wieder in greifbare Nähe 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben