8
votes

Comment obtenir un chemin absolu avec un codage de caractère approprié en Java?

J'aimerais obtenir le chemin absolu d'un fichier, de sorte que je puisse l'utiliser plus loin pour localiser ce fichier. Je le fais la manière suivante: xxx

Le chemin IRL ressemble à ceci: xxx

Cependant, puisqu'il contient des caractères et des espaces polonais, Qu'est-ce que je reçois de getabsolutpath est: xxx

Comment puis-je l'obtenir pour le faire de la bonne façon? C'est problématique, car avec ce chemin, il ne peut pas localiser le fichier (dit qu'il n'existe pas).


3 commentaires

Essayé avec getcanonicalpath?


Peut-être que c'est une sorte de confusion avec le périphérique de sortie. Essayez-vous de verser vos caractères spéciaux via Windows Console? Avez-vous essayé de le sortir dans un fichier avec un écrivain avec le codage approprié? Peut-être que vos données ont toujours été bien et que le problème réside dans la console de Windows peignant le problème


Mais ce n'est pas une question d'affichage dans la console. Le chemin est clairement faux, car lorsque je l'utilise comme un argument à une fonction ouvrant le fichier, il est dit qu'il n'existe pas. Si je copie et collez le chemin brut, les caractères polonais codés correctement, cela fonctionne bien.


4 Réponses :


0
votes
URI uri = new File(Swagger2MarkupConverterTest.class.getResource(
            "/json/swagger.json").getFile()).toURI(); 
File f = new File(uri);
System.out.println(f.exists());
You can use URI to encode your path, and open File by URI.

2 commentaires

D'accord, alors comment puis-je extraire un chemin? J'ai une fonction, qui nécessite un chemin de fichier. avec des caractères complètes et non émis


@ Michałszydłowski f.getpath ()



8
votes

Le url.getfile Vous utilisez renvoie la partie de fichier d'une URL codée en fonction des règles de codage de l'URL. Vous devez décoder la chaîne en utilisant urldecoder avant de le donner au fichier : xxx


0 commentaires

0
votes

Vous pouvez utiliser simplement

File file = new File("file_path");
String charset = "UTF-8";
BufferedReader reader = new BufferedReader(new InputStreamReader(
                    new FileInputStream(file), charset));


0 commentaires

1
votes

Le moyen le plus simple, qui ne consiste pas à décoder quoi que ce soit, est-ce: xxx

Peu importe maintenant où le fichier dans la classe de classe est physiquement, il sera trouvé aussi long Comme la ressource est en réalité un fichier et non une entrée de JAR.


0 commentaires