Quelle EST donc la bonne direction de la trajectoire de la barre oblique (/ ou \) sous Windows?
Il semble que Windows insiste sur la rédaction d'une barre oblique inverse \
dans les chemins de fichiers, tandis que .NET de la classe URI écrit avec une barre oblique /
. Est-il un droit chemin, qui est acceptée, même dans le plus primitif des systèmes? Et pourquoi est .NET de l'URI de l'autre barre oblique par rapport au reste de Windows?
- La raison, Microsoft est en arrière sur ce qui nous ramène à MS-DOS 2.0 (DOS 1.0 a pas de hiérarchie de répertoire), qui a utilisé une barre oblique inverse pour rester compatible avec ms-Dos 1.0 commandes, qui a utilisé slash pour les commutateurs de ligne de commande. Horrible, n'est-ce pas?
- Et slash pour les commutateurs de ligne de commande est un patrimoine de CP/M.
- Double Possible de la Différence entre " / " et " \ " dans le fichier chemin d'accès
Vous devez vous connecter pour publier un commentaire.
Un chemin d'accès au fichier et un URI sont différents.
\
est correct dans un fichier Windows chemin d'accès et/
est correct dans un URI.Donc ce fichier chemin d'accès:
C:\Documents\Foo
se traduit par l'URI:file:///C:/Documents/Foo
/
est le la chaîne de caractères d'échappement, en plusieurs langues,... à l'aide d'une barre oblique inverse dans une chaîne codée en dur nécessite une barre oblique inverse supplémentaire; par exemple,var foo = "C:\\Documents\\Foo";
.file:///C:\Documents\Foo
fonctionne très bienWindows est l'enfant bâtard de systèmes d'exploitation dans ce domaine, mais beaucoup d'Api sera accepter des barres obliques ainsi. Sur Windows, le chemin d'un fichier ressemble à ceci:
Sur un système de type Unix (dont Mac OS X et Linux), le même chemin ressemblerait à ceci:
Une URL, normalisé dans RFC 1738, toujours utilise des barres obliques, indépendamment de la plateforme:
La raison pour cela est historique. Même pas de Windows peut inverser notre réflexion sur les Url. Quand vous parlez des barres obliques inverses, la seule plate-forme, vous trouverez les utilise Windows (et quelques autres nouveauté ceux).
Où vous pourriez voir des barres obliques inverses utilisé autre que Windows serait les chemins d'accès UNC -- cependant, Windows est le principal promoteur de ces ainsi:
Et quoi que vous fassiez, ne pas faire une publicité pour votre site Web et de dire "mon entreprise dot com back slash promotion".
La raison pour cela est un petit morceau de l'histoire. Lorsque UNIX a été créé, ou devrais-je plutôt dire UNICS, ils ont choisi le /comme séparateur de répertoires.
Retour dans les jours, les supports de stockage était plutôt petite, et chaque répertoire dans la racine a été monté un autre périphérique de stockage (/bin /lib, etc.)
Lorsque Microsoft version MS-DOS, version 1.0, il n'a pas de répertoire de soutien. Ils ont utilisé le caractère /pour les paramètres de programmes (program /a /b)
MS-DOS 1.0, un rapide changement de nom de Q-DOS, est un CP/M dérivé du système d'exploitation, dont elle a hérité des lettres de lecteur (A: C: etc.)
Comme dans les versions ultérieures ils voulaient ajouter un répertoire à l'appui, ils ont choisi d'utiliser le \ depuis l' /avait déjà un autre sens à leur système d'exploitation.
Il y a de nombreux objets de l'histoire de l'informatique dans les systèmes d'exploitation modernes, qui, je suppose, la plupart des gens ne le réalisent pas, mais ont toujours une influence majeure sur la façon dont ils travaillent.
Alors, quelle est la bonne façon? Si il y a de tout, je dirais que c'est le /parce que les systèmes de type UNIX sont là façon avant que Microsoft a mis en place le répertoire de soutien dans leur DOS.
/
de MULTICS 🙂Comme une note de côté et d'en parler .NET, vous devez utiliser
System.IO.Path.DirectorySeparatorChar
pour obtenir le chemin d'accès actuel séparateur.[System.IO.Path]::DirectorySeparatorChar
en effet, les rapports/
sur plates-formes Unix. Le nom de la propriété est regrettable, cependant, étant donné surtout qu'il y a aussi[System.IO.Path]::PathSeparator
, qui rapporte l' (plate-forme spécifique) char. utilisé pour séparer les entrées dans lePATH
variable d'environnement (;
vs:
). Notez également qu'il n'y a[System.IO.Path]::AltDirectorySeparatorChar
, dont les rapports/
aussi sur Windows afin de refléter le fait que vous pouvez utiliser/
même sur Windows.Aussi loin que le système de fichiers des séparateurs de chemin aller, je crois que sur Windows tous Api sera accepter des barres obliques (mais peut-être il y a quelques buggy ceux qui ne le font pas) - le problème est que la plupart des applications n'ont pas les accepter (ou de les analyser de manière incorrecte).
En fait, si je me souviens bien, même MS-DOS accepté '/' comme séparateur de chemin au niveau de l'API depuis qu'il a commencé à soutenir les sous-répertoires (v2.0) - mais à l'époque, le caractère " /"avait déjà été établi que le "switch" de caractère pour les options de ligne de commande, de sorte que la barre oblique inverse est devenu le defacto séparateur de chemin sur le DOS (et plus tard de Windows).
Uri sont similaires, mais différentes d'animaux de chemins d'accès aux fichiers, et l'Uri doit toujours utiliser '/' pour séparer les composants. Les applications Windows et les Api probablement accepter '\' comme séparateur dans les Uri probablement parce que les gens sont familiers avec l'aide de barre oblique inverse comme un séparateur de ces systèmes et les Uri peuvent aussi être utiliser pour représenter les fichiers locaux.
Inutile de trivia de la journée - dans les premières versions de MS-DOS il y a une API pour modifier l'option de ligne de commande de l'interrupteur de caractères (généralement à partir de '/' à '-') de sorte que les commandes de regarder de plus Unix-like et les commandes accepterait '/' comme séparateur de chemin sur la ligne de commande. L'API a été moins réussis (je suppose parce que ce n'était pas universellement pris en charge par les applications), et il a été supprimé dans les versions ultérieures.
Hmm... en deuxième lecture, c'est toute la réponse est à peu près inutile de trivia.
Windows utilise la barre oblique inverse (
\
) pour le système de fichiers délimiteur. Pour tout le reste de la barre oblique est utilisée (/
). LeUri
type utilise la barre oblique parce que c'est la façon dont un identificateur de ressource uniforme est défini.Le web est basé sur UNIX façon de délimitation des répertoires dans un chemin avec une barre oblique (/). Windows sépare les répertoires avec des barres obliques inverses (\)
Le droit chemin dépend de l'utilisation. Pour un chemin d'accès à un fichier local sur une machine windows, utilisez la barre oblique inverse. Pour un chemin d'accès à une ressource web ou d'un fichier situé sur un UNIX de la machine (y compris sur les Mac, Linux), utilisez une barre oblique.
La raison .NET URI utilise des barres obliques, parce que c'est la mise en forme pour une utilisation dans un webbrowser.
Le serveur va faire tout le travail nécessaire pour le lien web de ressources pour les fichiers sur un disque dur.
Windows accepte à la fois pour le chemin.
Essayez d'ouvrir l'Explorateur Windows et le type
C:/Temp/Foo
,c:\Temp\Foo
sera correctement ouvert.\ Backslash est dangereux, car vous devez être prudent avec s'échapper tout le temps. De nombreux langages de programmation ont un équivalent de printf qui utilise la barre oblique inverse pour s'échapper.
/Frontslash est la plupart du temps inoffensifs.
: côlon a été (et dans une certaine mesure est toujours) utilisé par Apple.