Quelle est donc la bonne direction de la barre oblique (/ ou ) du chemin sous les fenêtres?

il semble que Windows insiste pour écrire un antislash dans les chemins de fichier, alors que la classe URI de .NET les écrit avec un slash / . Y a-t-il une bonne façon, qui soit acceptée même dans les systèmes les plus primitifs? Et pourquoi L'URI de. Net montre l'autre entaille par rapport au reste des fenêtres?

41
demandé sur PeeHaa 2009-10-19 21:10:51

9 réponses

un chemin de fichier et une URI sont différents. \ est correct dans un chemin de fichier Windows et / est correct dans une URI.

donc ce chemin de fichier: C:\Documents\Foo se traduit par cette URI: file:///C:/Documents/Foo

40
répondu Ben James 2009-10-19 17:18:00

Windows est l'enfant bâtard des systèmes d'exploitation à cet égard, mais beaucoup D'API accepteront des slashs vers l'avant aussi bien. Sous Windows, un chemin de fichier ressemble à ceci:

C:\Users\jsmith\Documents\file.txt

sur un système de type Unix (y compris Mac OS X et Linux), le même chemin ressemblerait à ceci:

/home/jsmith/Documents/file.txt

UNE URL, normalisé dans RFC 1738 , toujours utilise des barres obliques, indépendamment de la plateforme:

http://home.example.com/Documents/file.txt

la raison en est historique. Même Windows ne peut inverser notre pensée sur les URLs. Quand vous parlez de backslashs, la seule plate-forme que vous trouverez qui les utilise est Windows (et d'autres nouveautés).

où vous pourriez voir des antislashes utilisés autres que Windows seraient des chemins UNC -- cependant, Windows est le principal promoteur de ceux-ci aussi bien:

\HOMESVR\Documents\file.txt

et quoi que vous fassiez, ne faites pas publicité pour votre site web et de dire "mon entreprise dot com back slash promotion".

57
répondu Jed Smith 2009-10-19 17:40:45

la raison en est un petit morceau d'histoire. Quand UNIX a été créé, ou devrais-je plutôt dire UNICS, ils ont choisi le / comme séparateur pour les répertoires. À l'époque, les supports de stockage étaient plutôt petits, et chaque répertoire dans la racine était un autre périphérique de stockage monté (/bin /lib etc.)

lorsque Microsoft release MS-DOS version 1.0, il n'avait pas de support de répertoire. Ils ont utilisé le caractère / pour les paramètres des programmes (Programme /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 suivantes, ils ont voulu ajouter un support de répertoire, ils ont choisi d'utiliser le \ car le / avait déjà une autre signification dans leur système d'exploitation.

il existe de nombreux artefacts de l'histoire de l'informatique dans les systèmes d'exploitation modernes, que je suppose que la plupart des gens ne réalisent pas, mais ont encore une influence majeure sur comment ils fonctionnent.

Alors, quelle est la bonne façon? S'il y en a, je dirais que c'est le / parce que les systèmes D'exploitation de type UNIX étaient là-bas bien avant que Microsoft n'implémente le support de répertoire dans leur DOS.

27
répondu André van Schoubroeck 2017-04-08 16:11:24

comme note secondaire et en parlant de .NET, vous devriez utiliser System.IO.Path.DirectorySeparatorChar pour obtenir le séparateur de chemin courant.

11
répondu Rubens Farias 2016-09-12 01:16:10

en ce qui concerne les séparateurs de chemin du système de fichiers, je crois que sur Windows tous les API acceptent les slashs vers l'avant (mais il y a peut - être des buggy qui ne le font pas) - le problème est que la plupart des applications ne les acceptent pas (ou les analysent incorrectement).

en fait, si je me souviens bien, même MS-DOS a accepté '/' comme séparateur de chemin au niveau de L'API depuis qu'il a commencé à prendre en charge les sous-répertoires (v2.0) - mais à ce moment-là le caractère"/" avait déjà été établi comme le caractère "switch" pour les options de ligne de commande, de sorte que le backslash est devenu le séparateur de chemin de defacto sur DOS (et plus tard Windows).

Les URIs

sont des animaux similaires mais différents des chemins de fichiers, et les URIs doivent toujours utiliser '/' pour séparer les composants. Les applications Windows et les API acceptent probablement ' \ ' comme séparateur dans URIs probablement parce que les gens sont habitués à utiliser backslash comme séparateur sur ces systèmes et URIs peut également être utilisé pour représenter des fichiers locaux.


anecdote inutile de l'époque - dans certaines versions anciennes de MS-DOS il y avait une API pour changer le caractère de commutateur d'option de ligne de commande (généralement de '/' à '-') de sorte que les commandes pouvaient ressembler plus à Unix et les commandes accepteraient '/' comme séparateur de chemin sur la ligne de commande. L'API n'a pas eu beaucoup de succès (je suppose parce qu'elle n'était pas universellement supportée par les applications), et elle a été supprimée dans les versions ultérieures.

Hmm... en deuxième lecture, toute cette réponse est à peu près inutile.

10
répondu Michael Burr 2009-10-19 17:52:38

Windows utilise le antislash ( \ ) pour le délimiteur de système de fichiers. Pour tout le reste, la barre oblique avant est utilisée ( / ). Le type Uri utilise la barre oblique vers l'avant parce que c'est ainsi qu'est défini un Identificateur de ressource uniforme .

3
répondu Andrew Hare 2009-10-19 17:17:39

le web est basé sur la façon UNIX de délimiter les répertoires dans un chemin avec une barre oblique (/). Windows sépare les répertoires avec backslashs ( \ )

la bonne façon dépend de son utilisation. Pour un chemin vers un fichier local sur une machine windows, utilisez backslash. Pour un chemin vers une ressource web ou un fichier situé sur une machine UNIX (y compris Mac, Linux), utilisez une barre oblique.

la raison pour laquelle L'URI de. Net utilise les slashes forward est qu'il est formaté pour être utilisé dans un webbrowser.

le serveur fera tout le travail nécessaire pour relier les ressources web aux fichiers sur un disque dur.

3
répondu EmFi 2009-10-19 17:21:04

\ Backslash est dangereux, car vous devez être prudent avec s'échapper tout le temps. De nombreux langages de programmation ont un équivalent printf qui utilise des antislash pour s'échapper.

/ Frontslash est généralement inoffensif.

: colon a été (et est encore dans une certaine mesure) utilisé par Apple.

0
répondu neoneye 2009-10-19 17:49:02

Windows accepte les deux pour path.

essayez D'ouvrir Windows Explorer et tapez C:/Temp/Foo , c:\Temp\Foo sera correctement ouvert.

0
répondu LaBracca 2018-08-21 09:30:56