Ich erhalte eine URL, die eine lokale Datei findet (die Tatsache, dass ich eine URL erhalte, steht nicht unter meiner Kontrolle). Die URL wird ordnungsgemäß wie in RFC2396 definiert maskiert. Wie kann ich dies in ein Java-File-Objekt umwandeln?Java: Wie bekomme ich eine Datei von einer maskierten URL?
Lustig genug, die Methode URL getFile() gibt einen String, keine Datei zurück.
Ich habe ein Verzeichnis namens "/ tmp/some dir" erstellt (mit einem Leerzeichen zwischen "some" und "dir"), das korrekt von der folgenden URL gefunden wird: "file: /// tmp/einige% 20dir "(Zitate wurden zur besseren Übersicht hinzugefügt).
Wie kann ich diese URL in eine Java-Datei konvertieren?
Um mehr Details über meine Frage zu geben, die folgenden druckt falsch:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile());
System.out.println("Does dir exist? " + f.exists());
Während die folgende druckt true (manuell "% 20" mit einem Leerzeichen ersetzen):
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile().replaceAll("%20", " "));
System.out.println("Does dir exist? " + f.exists());
Beachten Sie, dass Ich frage nicht warum das erste Beispiel druckt falsch noch warum das zweite Beispiel mit meinem Hacky replaceAll Drucke wahr, ich frage ho w eine maskierte URL in ein Java-Dateiobjekt zu konvertieren.
EDIT: Danke an alle, das war fast ein Betrogener, aber nicht genau.
Dummerweise suchte ich nach einer Hilfsmethode innerhalb der URL-Klasse selbst.
Die folgenden Arbeiten wie erwartet eine Java-Datei aus einer Java-URL zu erhalten: arbeiten
URL url = new URL("file:///home/nonet/some%20dir");
File f = new File(URLDecoder.decode(url.getFile(), "UTF-8"));
Siehe auch http://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html für einen Vorbehalt. – Vadzim