Par exemple, disons que je l'ai fait pour que tous mes fichiers soient transférés d'une machine Windows vers une machine Unix en tant que telle: C:\test\myFile.txt
à {somewhere}/test/myFile.txt
(la lettre de lecteur n'est pas pertinente à ce stade).
Actuellement, notre bibliothèque d'utilitaires que nous avons écrite nous-mêmes fournit une méthode qui remplace simplement toutes les barres obliques inverses par des barres obliques:
public String normalizePath(String path) {
return path.replaceAll("\\", "/");
}
Les barres obliques sont réservées et ne peuvent pas faire partie d'un nom de fichier, la structure du répertoire doit donc être préservée. Cependant, je ne sais pas s'il y a d'autres complications entre Windows et les chemins Unix dont je pourrais avoir à m'inquiéter (par exemple: noms non ascii, etc.)
java
file-systems
MxLDevs
la source
la source
/foo\\bar
n'est pas équivalent à/foo/bar
Linux.Réponses:
Oui, si vous ne faites que le remplacement sous Windows et désactivez-le lorsque vous exécutez sur d'autres systèmes.
Faire le remplacement sur des systèmes de type Unix est incorrect car il
\
s'agit d'un caractère valide dans un nom de fichier ou de répertoire sur des plates-formes de type Unix. Sur ces plateformes, uniquementNUL
et/
sont interdits dans les noms de fichiers et de répertoires.De plus, certaines fonctions de l'API Windows (principalement celles de niveau inférieur) ne permettent pas l'utilisation de barres obliques - les barres obliques inverses doivent être utilisées avec elles.
la source
Oui, mais tout cela est un point discutable. Java convertit de manière transparente les barres obliques en barres obliques inverses sous Windows. Vous pouvez simplement utiliser des barres obliques pour tous les chemins qui sont codés en dur ou stockés dans la configuration et cela fonctionnera pour les deux plates-formes.
Personnellement, j'utilise toujours la barre oblique même sous Windows car ce n'est pas le caractère d'échappement. Que le chemin brut soit en code ou externalisé dans un fichier de propriétés, je l'encode de la même manière.
Essayez! Cela fonctionnera sous Windows. Évidemment, changez le chemin réel en quelque chose qui existe et votre utilisateur a la permission de lire.
Bonus: vous pouvez même mélanger des barres obliques dans le même chemin!
la source
COMMAND.COM
interprètes avaient une préférence d'exécution: vous pouviez configurer la barre oblique que l'interprète utiliserait pour l'impression et l'analyse.Une autre complication sous Windows est qu'il prend également en charge la notation UNC ainsi que les lettres de lecteur traditionnelles.
Un fichier sur un serveur de fichiers distant est accessible en tant que
\\server\sharename\path\filename
.la source
Non. Il y a bien plus de choses à penser que le simple séparateur de chemin (le "\ vs /"). Comme Rob Y le mentionne, il y a comment les espaces sont gérés et leur fréquence élevée dans l'utilisation de Windows. Il existe différents personnages illégaux dans les deux environnements. Il y a la volonté d'Unix d'autoriser presque n'importe quoi lorsqu'il est échappé par un "\" de tête. Windows utilise "" pour gérer les espaces intégrés. Windows utilise UCS-16 et Unix utilise ASCII ou UTF-8.
etc. , etc. , etc.
Mais , pour de nombreuses applications qui peuvent imposer des contraintes sur les chemins d'accès qu'elles doivent manipuler, vous pouvez réellement le faire exactement comme vous le suggérez. Et cela fonctionnera dans au moins un grand nombre de cas, mais pas tous.
la source
Chaque système d'exploitation Microsoft, à commencer par MS-DOS, a compris, au niveau du noyau, à la fois les barres obliques et les barres obliques inverses .
Par conséquent, sous Windows, vous pouvez convertir librement entre eux; les deux ont le même statut que les séparateurs réservés. Dans n'importe quel chemin valide, vous pouvez remplacer les barres obliques inverses par des barres obliques et vice versa, sans changer sa signification, en ce qui concerne le noyau.
Dans les premières versions de DOS, l'
command.com
interpréteur de Microsoft en faisait une préférence configurable, la barre oblique étant utilisée pour afficher et analyser les chemins. Cela a finalement été supprimé.Certains programmes de l'espace utilisateur dans Windows tels que, oh, le shell Windows (
explorer.exe
) n'aiment pas les barres obliques. C'est juste une mauvaise programmation dans ces programmes.la source