Entonces, cuál es la dirección correcta de la barra de la ruta (/ o \) en Windows?

StackOverflow https://stackoverflow.com/questions/1589930

  •  22-09-2019
  •  | 
  •  

Pregunta

Parece de Windows insiste en escribir un \ barra invertida en las rutas de archivos, mientras que la clase URI de .NET las escribe con una barra /. ¿Hay alguna manera correcta, que es aceptada incluso en los sistemas más primitivos? Y por qué es el URI de .NET que muestra la otra barra en comparación con el resto de Ventanas?

¿Fue útil?

Solución

Una ruta de archivo y un URI son diferentes. \ es correcto en una ruta de archivo de Windows y / es correcto en un URI.

Así que esta ruta de archivo: C:\Documents\Foo traduce a este URI: file:///C:/Documents/Foo

Otros consejos

Windows es el hijo bastardo de los sistemas que operan en este sentido, pero una gran cantidad de APIs aceptará barras diagonales también. En Windows, una ruta de archivo es similar al siguiente:

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

En un sistema de tipo Unix (incluyendo Mac OS X y Linux), el mismo camino sería el siguiente:

/home/jsmith/Documents/file.txt

Una URL, estandarizado en RFC 1738 , siempre utiliza barras inclinadas, independientemente de la plataforma:

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

La razón de esto es histórica. Ni siquiera Windows puede revertir nuestro pensamiento en direcciones URL. Cuando estamos hablando de barras invertidas, la única plataforma encontrará que los usos ellas es Windows (y algunos otros de la novedad).

¿Dónde se pueden ver las barras invertidas utilizadas no sea Windows sería rutas UNC - sin embargo, Windows es el principal defensor de éstos, así:

\\HOMESVR\Documents\file.txt

Y todo lo que hace, no hacen un comercial para su sitio Web y decir "mi punto com compañía de promoción de nuevo barra".

La razón de esto es un pedazo de historia. Cuando se creó UNIX, o debería decir más bien UNICS, eligieron el / como separador de directorios. En los días, medios de almacenamiento era bastante pequeña, y cada directorio en la raíz fue otro dispositivo de almacenamiento montado (/ bin / lib etc.)

Cuando liberación de MS-DOS de Microsoft versión 1.0, que no contaban con el apoyo del directorio. Utilizaron el carácter / para los parámetros de los programas (programa / a / b)

MS-DOS 1.0, un cambio de marca rápido de Q-DOS, es / sistema M deriva operar un CP, de la que heredó letras de unidad (A: C:. Etc)

Al igual que en las versiones posteriores que querían añadir un poco de ayuda de directorio, se optó por utilizar el \ ya que el / ya tenía otro significado en su sistema operativo.

Hay muchos artefactos de la historia de la informática en los sistemas operativos modernos, lo que supongo que la mayoría de las personas no se dan cuenta, pero todavía tienen una gran influencia en la forma en que funcionan.

Así que, ¿cuál es el camino correcto? Si hay alguna, diría que es el / porque UNIX sistemas operativos eran hace todo lo posible antes de que Microsoft implementó el apoyo en su directorio de DOS.

Como nota al margen y hablando de .NET, debe utilizar System.IO.Path.DirectorySeparatorChar para obtener el separador de ruta actual.

En cuanto a separadores de ruta del sistema de archivos ir, creo que en Windows todos API aceptará barras diagonales (pero tal vez hay algunos que no lo hacen con errores) - El problema es que la mayoría de las aplicaciones no los acepte (o analizar de forma incorrecta).

De hecho, si no recuerdo mal, incluso MS-DOS aceptado '/' como separador de ruta a nivel de API desde que comenzó a apoyar subdirectorios (v2.0) - pero en ese momento el carácter '/' ya tenía ha establecido como el carácter 'interruptor' para las opciones de línea de comandos, por lo que la barra invertida se convirtió en el separador de ruta de facto en DOS (y posterior Windows).

URIs son un animal similar pero diferente de las rutas de archivos y URIs debe utilizar siempre '/' para separar los componentes. aplicaciones de Windows y API probablemente aceptan '\' como separador en URIs probablemente porque la gente está familiarizada con el uso de la barra invertida como separador en dichos sistemas y URI también se puede utilizar para representar los archivos locales.


trivia inútil del día - en algunas versiones anteriores de MS-DOS no había una API para cambiar la línea de comandos carácter cambio de la opción (generalmente de '/' a '-') para que los comandos podrían parecer más similar a Unix y los comandos aceptarían '/' como separador de ruta en la línea de comandos. El API fue menos que exitoso (supongo que porque no fue universalmente apoyada por aplicaciones), y lo ha extraído en versiones posteriores.

Hmm ... en la segunda lectura, toda esta respuesta es más o menos trivia inútil.

Windows utiliza la barra invertida (\) para el delimitador de sistema de archivos. Para todo lo demás la barra diagonal se utiliza (/). El tipo Uri utiliza la barra diagonal porque así es como un href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier" rel="nofollow noreferrer"> identificador de recursos uniforme se define.

La web se basa en la forma de delimitar directorios UNIX en un camino con una barra (/). directorios de Windows separa con barras invertidas (\)

La forma correcta depende de su uso. Para una ruta a un archivo local en una máquina Windows, utilice la barra invertida. Para una ruta a un recurso web o archivo que se encuentra en una máquina basada en UNIX (incluye Mac, Linux), utilice una barra.

URI La razón de .NET utiliza barras diagonales es porque es el formato para su uso en un navegador web.

El servidor va a hacer todo el trabajo necesario para los recursos web de enlaces a archivos en un disco duro.

Windows acepta tanto para la ruta.

Trate de abrir el Explorador de Windows y el tipo C:/Temp/Foo, se abrirán correctamente c:\Temp\Foo.

\ backslash es peligroso, ya que hay que tener cuidado con escapando todo el tiempo. Muchos lenguajes de programación tienen un printf equivalente que usa barras invertidas para escapar.

/ Frontslash es sobre todo inofensivo.

:. De colon era (y en cierta medida sigue siendo) usado por Apple

scroll top