Je reçois une URL qui localise un fichier local (le fait que je reçois une URL n'est pas sous mon contrôle). L'URL est échappée valablement comme défini dans RFC2396. Comment puis-je transformer ceci en un objet Java File? Bizarrement, la méthode URL getFile() renvoie une chaîne, pas un fichier.Java: comment obtenir un fichier à partir d'une URL échappée?
J'ai créé un répertoire appelé "/ tmp/un répertoire" (avec un caractère d'espacement entre "un" et "dir"), qui est correctement localisé par l'URL suivante: "file: /// tmp/certains% 20dir "(citations ajoutées pour plus de clarté). Comment puis-je convertir cette URL en un fichier Java?
Pour donner plus de détails au sujet de ma question, les impressions suivantes faux:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile());
System.out.println("Does dir exist? " + f.exists());
Bien que les éléments suivants (en remplacement de la main "% 20" avec un espace) imprime vrai:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile().replaceAll("%20", " "));
System.out.println("Does dir exist? " + f.exists());
Notez que Je ne demande pas pourquoi le premier exemple imprime faux ni pourquoi le deuxième exemple en utilisant mon hacky remplacerTous imprime vrai, je demande ho w pour convertir une URL échappée en un objet Fichier Java.
EDIT: merci à tous, c'était presque une dupe mais pas exactement. Sincèrement, je cherchais une méthode d'aide dans la classe d'URL elle-même.
Les travaux suivants comme prévu pour obtenir un fichier Java à partir d'une URL Java:
URL url = new URL("file:///home/nonet/some%20dir");
File f = new File(URLDecoder.decode(url.getFile(), "UTF-8"));
Voir aussi http://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html pour une mise en garde. – Vadzim