Java-Problem mit Pfaden.

OP (Firma: Q3) #6582793
Lesenswert?

Das ist ein Ausschnitt aus meinem Testcode:
1
String fpath = "||192.168.10.5|FM|670.zip";
2
fpath = fpath.replaceAll("|",FileSystems.getDefault().getSeparator());
3
System.out.println("fpath: "+fpath);
4
File file = new File(fpath);

und diese Fehlermeldung erhalte ich:
1
fpath: //192.168.10.5/FM/670.zip
2
java.nio.file.NoSuchFileException: /192.168.10.5/FM/670.zip

Fakt ist, das File und die Freigabe "FM" existieren definitiv auf dem 
Server, wo ist das sch... Problem?

Danke für Tips.
OP (Firma: Q3) #6582800
Lesenswert?

Thilo L. schrieb:
> Hmmm... vielleicht der fehlende doppelte Slash am Anfang?

Ja, das vermute ich auch, aber wohin verschwindet der? Im Original (aus 
einer DB) steht ja "||", was dann ausgetauscht werden soll und in der 
Kotrollausgabe (über der Fehlermeldung) ist das ja auch so.

Ich habe schon mehrere "|||||" bzw "/////" versucht, werden immer auf 
eines reduziert.
Gast #6582872
Lesenswert?

Wenn der Directory seperator / ist, ist dass dann ein Linux oder Unix 
system?
Bei denen hat // a Anfang nämlich keine spezielle Bedeutung. // und /./ 
und / werden da alle gleich behandelt, das bleibt ein lokaler Pfad, da 
wird nicht versucht, über smb irgendwo darauf zuzugreifen. Du kannst das 
auch im Terminal nachprüfen, mit "ls //192.168.10.5/FM/670.zip" wird 
versuchen, lokal eine Datei /192.168.10.5/FM/670.zip zu finden.

Manche Dateimanager & Gnome Anwendungen haben eventuell noch extra logik 
für URLs und derartiges eingebaut, meistens indirekt, wenn diese gio 
nutzen, und man GVfs installiert hat, lädt gio dann gvfs, und gvfs 
Mounted das zeug als Fuse Dateisystem in ~/.gvfs/, /run/user/$UID/gvfs 
oder $XDG_RUNTIME_DIR/gvfs, und über den lokalen Pfad können dann auch 
nicht-gio Anwendungen die Datei öffnen.

Ich finde das Design des ganze gvfs zeugs ja ziemlich bescheuert. Die 
hätten lieber ein FS machen sollen, dass man einfach in vfs oder so 
mountet, so dass man dann sowas wie /vfs/smb://192.168.10.5/FM/670.zip 
hätte machen können, und zwar von allen Anwendungen aus, nicht nur 
einigen Gnome Dingern, aber nein, sie mussten das Rad neu erfinden, 
mounten anders lösen, und die Pfade hin und her Konvertieren...
OP (Firma: Q3) #6582887
Lesenswert?

Konkret sitze ich an einem Mac und will aus einer Java-App auf einen 
Windows-Server zugreifen. Das würde ich gerne, ohne dass ich extra ein 
Volume lokal mappen muss. Wenn ich das mache, dann klappt der Zugriff 
über
1
/Volumes/...
Dann ist das wohl so :-(

Ich dachte bisher immer, UNC-Pfade sind System-unabhängig.
OP (Firma: Q3) #6582928
Lesenswert?

Mario M. schrieb:
> Fehlt da das Protokoll vor der Freigabe?String fpath =
> "smb:||192.168.10.5|FM|670.zip";
>
> https://support.apple.com/de-de/guide/mac-help/mchlp1654/mac

Das kenne ich natürlich vom Einrichten eines gemappten Volumes unter 
"Gehe zu Server ..." im Finder. In dem Falle hier habe ich es gerade 
probiert, macht keinen Unterschied.

In der AUsgabe der Fehlermeldung wird das weggelöscht und zusätzlich 
werden alle doppelten Slashes oder Backslashes zu einfachen, egal wie 
viele im Quellstring drin sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren