/
est le séparateur de chemin sur Unix et les systèmes de type Unix. Les systèmes Windows modernes peuvent généralement utiliser les deux types de séparateurs \
et /
de manière interchangeable pour les chemins d'accès aux fichiers, mais Microsoft a préconisé l'utilisation de \
comme séparateur de chemin depuis des décennies.
Ceci pour des raisons historiques qui remontent aux années 70, précédant Windows de plus d'une décennie. Au début, MS-DOS (la base des premiers Windows) ne prenait pas en charge les répertoires. Unix prenait en charge les répertoires à l'aide de la fonction /
depuis le début. Cependant, lorsque les répertoires ont été ajoutés dans MS-DOS 2.0, Microsoft et IBM utilisaient déjà le caractère /
caractère pour Commutateurs de commande et en raison de l'analyseur léger de DOS (dérivé de QDOS conçu pour fonctionner sur du matériel bas de gamme), ils n'ont pas réussi à trouver un moyen viable d'utiliser le système d'exploitation du /
sans rompre la compatibilité avec leurs applications existantes.
Ainsi, pour éviter les erreurs de type "missing a switch" ou "invalid switch" lorsque l'on passe des chemins d'accès aux fichiers comme arguments à des commandes telles que celles-ci :
cd/ <---- no switch specified
dir folder1/folder2 <---- /folder2 is not a switch for dir
il a été décidé que la \
serait utilisé à la place, de sorte que vous pourriez écrire ces commandes comme suit
cd\
dir folder1\folder2
sans erreur.
Plus tard, Microsoft et IBM ont collaboré à un système d'exploitation sans rapport avec le DOS, appelé OS/2 . OS/2 avait la possibilité d'utiliser les deux séparateurs, probablement pour attirer davantage de développeurs Unix. Lorsque Microsoft et IBM se sont séparés en 1990 Microsoft a repris le code dont il disposait et a créé Windows NT sur lequel sont basées toutes les versions modernes de Windows, et qui porte en lui cet agnosticisme du séparateur.
Comme la compatibilité ascendante a été le mot d'ordre de Microsoft dans toutes les grandes transitions de systèmes d'exploitation qu'elle a entreprises (DOS à Win16/DOS, à Win16/Win32, à Win32/WinNT), cette particularité est restée, et elle existera probablement encore pendant un certain temps.
C'est pour cette raison que cette divergence existe. Elle ne devrait pas avoir d'incidence sur ce que vous faites car, comme je l'ai dit, l'interface utilisateur WinAPI peut généralement les utiliser de manière interchangeable. Cependant, les applications tierces se casseront probablement la figure si vous passez une valeur de /
lorsqu'ils s'attendent à une \
entre les noms de répertoire. Si vous utilisez Windows, utilisez \
. Si vous utilisez Unix ou URI (qui trouvent leur origine dans les chemins Unix, mais c'est une autre histoire), puis utiliser la fonction /
.
Dans le contexte de C# : Il convient de noter que, dans la mesure où cette est techniquement une question C#, que si vous voulez écrire un code C# plus "portable" qui fonctionne à la fois sur Unix et Windows (même si C# est principalement un langage Windows), vous voudrez peut-être utiliser l'option Path.DirectorySeparatorChar
afin que votre code utilise le séparateur préféré sur ce système, et utilisez le champ Path.Combine()
pour ajouter des chemins correctement.
4 votes
Différence dans quel contexte ? Un contexte webby ? L'échappement dans les chaînes de caractères C# ? Il est étiqueté avec ASP.NET.
9 votes
Duplicata possible de Différence entre barre oblique et barre oblique inverse
0 votes
Top link googling for "Difference between forward slash and backslash in file path" : howtogeek.com/181774/ l'explique assez bien
7 votes
@Peter Je fermerais l'ancien forum en tant que duplicata de celui-ci, puisque celui-ci a obtenu de meilleures réponses.
7 votes
Comment les c# et asp.net en rapport avec la question ?
0 votes
@Oriol Je suppose qu'il s'agit de savoir quand utiliser chacun d'entre eux dans cette langue particulière. C'est assez large pour s'appliquer à tous les langages, mais j'ai ajouté quelques informations spécifiques à C# dans ma réponse.
1 votes
Cette question a peut-être les meilleures réponses, mais il n'y a pas de réponse (y compris la mienne) qui n'ait déjà été mentionnée dans stackoverflow.com/questions/1589930/
0 votes
@PeterMortensen Lorsque j'ai cliqué sur le lien que vous avez fourni, je vois qu'il est fermé car il s'agit d'un doublon de cette question ? Une question peut-elle être un double d'elle-même ? Si celle à laquelle vous faites référence a été posée il y a 4 ans, dans quel monde peut-elle être fermée en tant que duplicata d'une question posée hier ? Je vais devoir répondre à cette question Tachyon Ansible breveté, en toute hâte. Dès que mon arrière-arrière-petit-enfant sera né pour le créer...
1 votes
@nocomprende, Peter a recommandé de fermer ce message car il s'agit d'un doublon de l'ancien (il y a 21h). Cette question a attiré de meilleures réponses, plus complètes, que l'ancienne, et d'autres utilisateurs ont donc décidé de fermer l'ancienne question en tant que doublon de la nouvelle (il y a 5h). C'est inhabituel, mais pas inédit.
2 votes
@zzzzBov pourquoi celle-ci n'a-t-elle pas été redirigée vers l'ancienne et les meilleures réponses y ont-elles été placées ? Je n'aime pas un système où une question que je pose pourrait être fermée dans un futur lointain comme un "doublon" de quelque chose qui s'est produit plus tard. Il faut au moins donner un nom plus descriptif, comme "remplacé" plutôt que "dupliqué". Le "un" original ne peut être un double de quoi que ce soit, il est le seul.
1 votes
@nocomprende, j'expliquais seulement l'ordre des événements. Si vous avez des questions sur le comment et le pourquoi de ces événements, n'hésitez pas à les poser sur Meta Stack Overflow .
1 votes
OP, pouvez-vous ajouter quelques détails sur ce que vous demandez ? Par exemple, un exemple serait utile. Et pourquoi l'avez-vous étiqueté avec C# et ASP.NET ? Si l'origine de la question est liée à l'utilisation d'ASP.NET, pouvez-vous nous en dire un peu plus à ce sujet ? Par exemple, où les barres obliques entrent-elles en jeu ?