Al escribir rutas de archivos en C#, encontré que puedo escribir algo como "C: \" o "C: /" y obtener la misma ruta. ¿Cuál se recomienda? Escuché en alguna parte que usar una/era más recomendable que usar \ (con \ como una secuencia de escape).Usando/o \ para rutas de carpeta en C#
Respuesta
Windows admite ambos separadores de ruta, por lo que ambos funcionarán, al menos para las rutas locales (/ no funcionarán para las rutas de red). Lo que pasa es que no hay ningún beneficio real de utilizar el trabajo pero separador de ruta no estándar (/) en Windows, sobre todo porque se puede utilizar la cadena textual literal:
string path = @"C:\" //Look ma, no escape
El único caso en el que podía ver un beneficio de utilizar el/separador es cuando solo trabajará con rutas relativas y usará el código en Windows y Linux. Luego puede hacer que "../foo/bar/baz" apunte al mismo directorio. Pero incluso en este caso, es mejor dejar el espacio de nombres System.IO (Path.DirectorySeparatorChar, Path.Combine) para ocuparse de estos problemas.
Lo que está llamando "operador de cadena sin formato" es realmente "literal literal literal". –
¡Gracias por la respuesta! – DMan
@Jay: "Verbatim string literal operator"? o simplemente "literal de la secuencia de Verbatim"? –
escribo caminos en C# como esto:
@ "C: \ My \ Path"
El carácter @ se apaga \ escapar.
Esto no es un problema de C#: es un problema de Windows. Las rutas en Windows normalmente se muestran con una barra diagonal inversa: C :. En mi opinión, eso es lo que deberías usar en C#. Use @ "C: \" para evitar un manejo especial de los caracteres de bailoteo.
Use Path.Combine
y no necesita preocuparse por tal semántica.
Es una pena que Path.Combine solo tome 2 parámetros. –
@MikeCole desde .NET 4.0, una sobrecarga toma cualquier cantidad de parámetros mediante la palabra clave 'params'. – nawfal
Utilice Path.DirectorySeparatorChar O mejor, ya que Poita sugirió usar Path.Combine.
'Path.PathSeparator' es un caracter para dividir rutas en la variable de entorno PATH. En Windows es ';'. Actualicé esta respuesta para referirme a 'DirectorySeparatorChar'. –
Vaya. Gracias por la corrección, quise publicar sobre DirectorySeparatorChar. – SolutionYogi
Esta es la solución correcta. –
- 1. Práctica recomendada para compilar rutas de archivos en C#
- 2. rutas relativas para bibliotecas compartidas
- 3. Clase C# (no estática) para representar rutas
- 4. Copia de carpeta en C#
- 5. Rutas relativas en Winforms
- 6. Múltiples rutas de salida para un archivo de proyecto C#
- 7. tipo C# para manejar rutas URI relativas y absolutas y rutas de archivos locales
- 8. estructura src/carpeta en C++?
- 9. C# MVC enrutamiento - múltiples rutas
- 10. Generación de URL para rutas en Express
- 11. Expresión regular para validar rutas de archivos basadas en Windows, incluidas las rutas UNC
- 12. Conversión de rutas relativas a rutas absolutas
- 13. Algoritmo de rutas más cortas C++ k
- 14. Makefile: crea un ejecutable para cada .c en la carpeta
- 15. Rutas relativas en Visual Studio
- 16. Biblioteca multiplataforma para manipular rutas de Windows?
- 17. Rutas rutas con fechas
- 18. Rutas/rutas/caminos personalizados en Google Maps
- 19. Obtener rutas de imagen de NSBundle en Objective C?
- 20. Rutas rutas lógica
- 21. Obtener archivos en una carpeta
- 22. Rutas relativas para portátiles portátiles en mathematica
- 23. ¿Cómo eliminar una carpeta en C++?
- 24. ¿Cómo debo manejar las rutas de Windows/Linux en C#
- 25. ¿Cómo obtener la carpeta% AppData% en C?
- 26. Obtención de rutas relativas en Vim
- 27. Buscar la carpeta windows programáticamente en C#
- 28. Un controlador para múltiples rutas
- 29. Trabajando con rutas de archivos relativas en .Net
- 30. Anteponer prefijo de ruta para todas las rutas de carriles
Gracias a John Saunders por señalar que este es un problema de Windows. Escuché que usar/es mejor para la compatibilidad cruzada, que no importa demasiado aquí ya que estoy apuntando a Windows. – DMan
Error en el título: debe ser "/ o \\", no "// o \". – sblom
@ sblom- No estoy seguro de la diferencia exacta, pero corregido porque funciona: p – DMan