Entonces, por ejemplo, digamos que lo tenía para que todos mis archivos se transfieran de una máquina Windows a una máquina Unix como tal: C:\test\myFile.txt
to {somewhere}/test/myFile.txt
(la letra de la unidad es irrelevante en este punto).
Actualmente, nuestra biblioteca de utilidades que escribimos nosotros mismos proporciona un método que reemplaza de manera simple todas las barras diagonales inversas por barras diagonales:
public String normalizePath(String path) {
return path.replaceAll("\\", "/");
}
Las barras inclinadas están reservadas y no pueden formar parte del nombre de un archivo, por lo que la estructura del directorio debe conservarse. Sin embargo, no estoy seguro de si hay otras complicaciones entre ventanas y rutas de Unix de las que deba preocuparme (p. Ej., Nombres que no sean ascii, etc.)
java
file-systems
MxLDevs
fuente
fuente
/foo\\bar
no es equivalente a/foo/bar
en Linux.Respuestas:
Sí, si solo realiza el reemplazo en Windows y lo apaga cuando se ejecuta en otros sistemas.
Hacer el reemplazo en sistemas similares a Unix es incorrecto porque
\
es un carácter válido en un archivo o nombre de directorio en plataformas similares a Unix. En estas plataformas, soloNUL
y/
están prohibidos en los nombres de archivos y directorios.Además, algunas funciones de la API de Windows (principalmente las de nivel inferior) no permiten el uso de barras diagonales; las barras diagonales inversas deben usarse con ellas.
fuente
Sí, pero todo esto es un punto discutible. Java convierte perfectamente las barras diagonales en barras diagonales en Windows. Simplemente puede usar barras diagonales para todas las rutas que están codificadas o almacenadas en la configuración y funcionará para ambas plataformas.
En lo personal, yo siempre uso la barra diagonal incluso en Windows, ya que es no el carácter de escape. Ya sea que la ruta sin procesar esté en código o externa en un archivo de propiedades, la codifico de la misma manera.
¡Intentalo! Esto funcionará en Windows. Obviamente, cambie la ruta real a algo que exista y su usuario tenga permiso para leer.
Bonificación: ¡incluso puedes mezclar barras en el mismo camino!
fuente
COMMAND.COM
intérpretes tenían una preferencia de tiempo de ejecución: podía configurar qué barra utilizaría el intérprete para imprimir y analizar.Otra complicación en Windows es que también admite la notación UNC y las letras de unidad tradicionales.
Se puede acceder a un archivo en un servidor de archivos remoto como
\\server\sharename\path\filename
.fuente
No. Hay muchas más cosas en las que pensar que solo el separador de ruta (la cosa "\ vs /"). Como menciona Rob Y, hay cómo se manejan los espacios y su alta frecuencia en el uso de Windows. Hay diferentes caracteres ilegales en los dos entornos. Existe la voluntad de Unix de permitir casi cualquier cosa cuando se escapa por un "\" líder. Hay un uso de Windows de '"' para tratar con espacios incrustados. Hay un uso de Windows de UCS-16 y el uso de ASCII o UTF-8 de Unix.
etc. , etc. , etc.
Pero , para muchas aplicaciones que pueden imponer restricciones a los nombres de ruta que necesitan manipular, en realidad puede hacerlo de la manera que sugiere. Y funcionará en al menos un gran número de casos, pero no en todos.
fuente
Todos los sistemas operativos de Microsoft, comenzando con MS-DOS, han entendido, a nivel del núcleo, tanto las barras diagonales como las barras diagonales inversas .
Por lo tanto, en Windows, puede convertir entre ellos libremente; ambos tienen el mismo estado que los separadores reservados. En cualquier ruta válida, puede reemplazar las barras diagonales inversas con barras diagonales y viceversa, sin cambiar su significado, en lo que respecta al núcleo.
En las primeras versiones de DOS, el
command.com
intérprete de Microsoft lo convertía en una preferencia configurable que se utilizaba para mostrar y analizar rutas. Eso finalmente fue eliminado.Algunos programas de espacio de usuario en Windows como, oh, el shell de Windows (
explorer.exe
) no les gustan las barras diagonales. Eso es simplemente una mala programación en esos programas.fuente