Convertir URL Cheminabsolu
Est-il un moyen facile de convertir une URL qui contient à deux octets de caractères dans un chemin d'accès absolu?
La raison pour laquelle je demande c'est que je suis en train d'essayer de trouver des ressources comme ceci:
URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);
Le programme ne peut pas trouver le fichier. Je sais que le chemin d'accès contient '%20' pour tous les espaces de laquelle j'ai pu convertir, mais mon vrai problème, c'est que je suis en utilisant un système d'exploitation japonais et lorsque le programme jar fichier dans un répertoire avec le texte japonais (par exemple デスクトップ), je reçois le URL de codage d'un nom de répertoire,
comme ceci:
%e3%83%87%e3%82%b9%e3%82%af%e3%83%88%e3%83%83%e3%83%97
Je pense que je pourrais obtenir de l'UTF-8 octets de codes et de les convertir dans le bon personnages de trouver le fichier, mais je me demandais si il existe un moyen plus facile de le faire. Toute aide serait grandement appréciée.
nt
Est-il de la classe que je peux utiliser pour convertir le chemin d'accès à la normale des caractères lisibles?
OriginalL'auteur nite | 2010-09-02
Vous devez vous connecter pour publier un commentaire.
Moritz a obtenu. Un objet de Fichier ne peut pas instancier l'aide d'une URL à une version archivée de ressources. Vous aurez à les diffuser.
a obtenu une exception "URI n'est pas hiérarchique"
OriginalL'auteur Noel Ang
File
a un constructeur prenant un argument de typejava.net.URI
pour ce cas:L'erreur que j'obtiens est: java.lang.IllegalArgumentException: URI n'est pas hiérarchique
Se pourrait-il que vous groupez votre application avec les ressources dans un
.jar
-fichier? Vous ne pouvez pas créer unFile
objet duURI
alors que la ressource n'est pas un fichier mais une entrée dans cette.jar
.Ah, je vois. Donc, puisque je suis le regroupement dans un .fichier jar, est-il une solution?
Pas de. Vous avez à lire à partir de la ressource par le biais d'un
InputStream
, soit par l'appelurl.openStream()
ou directement viagetClass().getResourceAsStream("resource.txt")
. Si vous avez besoin de savoir où sur le disque de votre.jar
est, vous pouvez consulter leURL
retourné, mais vous ne pouvez pas créer unFile
le référencement de votre ressource à l'intérieur que.jar
.OriginalL'auteur Moritz