path - una - ruta escritorio mac
Entonces, ¿cuál es la dirección correcta de la barra(/ o /) de la ruta de acceso en Windows? (9)
Como nota al margen y al hablar de .NET, debe usar System.IO.Path.DirectorySeparatorChar
para obtener el separador de ruta actual.
Parece que Windows insiste en escribir una barra invertida en las rutas de archivo, mientras que la clase URI de .NET las escribe con una barra inclinada /
. ¿Hay alguna manera correcta, que sea aceptada incluso en los sistemas más primitivos? ¿Y por qué el URI de .NET muestra la otra barra en comparación con el resto de Windows?
En lo que respecta a los separadores de ruta del sistema de archivos, creo que en Windows todas las API aceptan barras diagonales (pero quizás hay algunas que tienen errores): el problema es que la mayoría de las aplicaciones no las aceptan (o las analizan incorrectamente). ).
De hecho, si recuerdo correctamente, incluso MS-DOS aceptó ''/'' como separador de ruta en el nivel de API desde que comenzó a admitir subdirectorios (v2.0), pero en ese momento el carácter ''/'' ya se había establecido como el carácter ''cambiar'' para las opciones de la línea de comando, por lo que la barra diagonal inversa se convirtió en el separador de la ruta de facto en DOS (y más tarde en Windows).
Los URI son un animal similar pero diferente a las rutas de archivos, y los URI siempre deben usar ''/'' para separar los componentes. Las aplicaciones y API de Windows probablemente aceptan ''/' como separador en los URI, probablemente porque las personas están familiarizadas con el uso de barra diagonal inversa como separador en esos sistemas y los URI también se pueden usar para representar archivos locales.
Trivialidades inútiles del día: en algunas versiones anteriores de MS-DOS había una API para cambiar el carácter de cambio de opción de la línea de comandos (generalmente de ''/'' a ''-''), de modo que los comandos pudieran tener un aspecto más similar a Unix y los comandos acepte ''/'' como separador de ruta en la línea de comando. La API tuvo menos éxito (supongo que porque las aplicaciones no la admitían universalmente) y se eliminó en versiones posteriores.
Hmm ... en la segunda lectura, toda esta respuesta es una trivialidad bastante inútil.
La razón de esto es un pequeño pedazo de historia. Cuando se creó UNIX, o más bien debería decir UNICS, eligieron el / como separador para los directorios. En el pasado, los medios de almacenamiento eran bastante pequeños, y cada directorio en la raíz era otro dispositivo de almacenamiento montado (/ bin / lib, etc.)
Cuando Microsoft lanzó MS-DOS versión 1.0, no tenía soporte de directorio. Usaron el carácter / para los parámetros de los programas (programa / a / b)
MS-DOS 1.0, un cambio rápido de marca de Q-DOS, es un sistema operativo derivado de CP / M, del cual heredó letras de unidad (A: C: etc.)
Como en versiones posteriores, querían agregar algún soporte de directorio, optaron por usar / ya que / ya tenía otro significado en su sistema operativo.
Hay muchos artefactos de la historia de la computadora en los sistemas operativos modernos, que supongo que la mayoría de las personas no se dan cuenta, pero todavía tienen una gran influencia en cómo funcionan.
Entonces, ¿cuál es el camino correcto? Si hay alguno, diría que es el / porque los sistemas operativos similares a UNIX estaban disponibles antes de que Microsoft implementara el soporte de directorio en su DOS.
La web se basa en la forma UNIX de delimitar directorios en una ruta con una barra (/). Windows separa los directorios con barras invertidas (/)
La forma correcta depende de su uso. Para una ruta a un archivo local en una máquina con Windows, use la barra invertida. Para una ruta a un recurso o archivo web ubicado en una máquina basada en UNIX (incluye Macs, Linux), use una barra diagonal.
La razón por la que el URI de .NET utiliza barras diagonales es porque se está formateando para su uso en un navegador web.
El servidor hará todo el trabajo necesario para vincular los recursos web a los archivos en un disco duro.
Una ruta de archivo y un URI son diferentes. /
es correcto en una ruta de archivo de Windows y /
es correcto en una URI.
Así que esta ruta de archivo: C:/Documents/Foo
traduce a este URI: file:///C:/Documents/Foo
Windows acepta ambos para la ruta.
Intente abrir el Explorador de Windows y escriba C:/Temp/Foo
, c:/Temp/Foo
abrirá correctamente.
Windows es el hijo bastardo de los sistemas operativos en este sentido, pero muchas API también aceptarán barras diagonales. En Windows, una ruta de archivo se ve así:
C:/Users/jsmith/Documents/file.txt
En un sistema similar a Unix (incluido Mac OS X y Linux), la misma ruta se vería así:
/home/jsmith/Documents/file.txt
Una URL, estandarizada en RFC 1738 , siempre usa barras diagonales, 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 las URL. Cuando hablas de barras invertidas, la única plataforma que encontrarás que las usa es Windows (y algunas otras novedosas).
Donde puede ver que se usan barras diagonales diferentes a las de Windows serían las rutas UNC; sin embargo, Windows también es el principal defensor de estas:
//HOMESVR/Documents/file.txt
Y haga lo que haga, no haga un anuncio para su sitio web y diga "mi empresa dot com back slash promotion".
Windows usa la barra invertida ( /
) para el delimitador del sistema de archivos. Para todo lo demás se usa la barra diagonal ( /
). El tipo Uri
usa la barra inclinada porque es así como se define un identificador uniforme de recursos .
/ La barra invertida es peligrosa, ya que debes tener cuidado con escapar todo el tiempo. Muchos lenguajes de programación tienen un equivalente de printf que usa barra invertida para escapar.
/ Frontslash es mayormente inofensivo.
: colon fue (y hasta cierto punto todavía) es usado por Apple.