[NIO2 / URI] Problème pour la création de fichier zip avec path contenant des espaces
Bonjour :),
Comme vous l'avez devinez j'ai un problème !
Je suis actuellement en train de migrer du code vers NIO2.
En suivant en suivant les conseils du cours Java de JM Doudoux (merci à lui :hola::hola::hola:) pour créer un nouveau fichier zip.
J'ai besoin d'une URI :
Code:
1 2 3 4 5 6
| private static FileSystem creerZipFileSystem(Path zipFile) throws IOException {
final URI uri = URI.create("jar:file:" + zipFile.toUri().getPath());
final Map<String, String> env = new HashMap<>();
env.put("create", "true");
return FileSystems.newFileSystem(uri, env);
} |
J'ai donc un bloque de teste qui appelle cette fonction:
Code:
1 2
| String filePath = "C:\\Mon\\Chemin\\Avec des\\espaces\\Vers le\\FichierACree.zip";
creerZipFileSystem(Paths.get(outputFakeVendorFile)); |
mais dans ce cas la je me ramasse un jolie erreure du type
Citation:
Illegal character in opaque part at index 28: jar:file:/C:/Mon/Chemin/Avec des/espaces/Vers le/FichierACree.zip
J'ai donc tenter une approche latéralisante du problème (effectivement cette phrase n'as aucun sens)
en utilisant le constructeur
Code:
URI(String scheme, String host, String path, String fragment)
ce qui donne le code suivant:
Code:
1 2 3 4 5 6
| private static FileSystem creerZipFileSystem(Path zipFile) throws IOException {
final URI uri = new URI("jar:file", null, zipFile.toUri().getPath().toString(), null);
final Map<String, String> env = new HashMap<>();
env.put("create", "true");
return FileSystems.newFileSystem(uri, env);
} |
et cette fois c'est au niveau du return de ma fonction «creerZipFileSystem» que je me heurte à l'erreure:
Code:
Illegal character in path at index 24: file:/C:/Mon/Chemin/Avec des/espaces/Vers le/FichierACree.zip
je pense donc que ça viens d'une mauvaise utilisation de ma part des URI*mais c'est la première fois que j'en utilise, et malgres mes divers autres tentative je ne suis arrivé à rien. :arf:
Donc si vous avez des conseil n'hésitez pas :)
D'avance merci bien :)