variable script modificar lineas linea leer jerarquia fichero extraer entorno configurar archivos java windows unix file

java - script - Diferencias entre archivos Unix y Windows



variable path windows 10 (6)

Además de las diferencias de nueva línea, la marca de orden de bytes puede causar problemas si los archivos se tratan como Unicode en Windows.

¿Estoy en lo cierto al suponer que la única diferencia entre "archivos de Windows" y "archivos de Unix" es el salto de línea?

Tenemos un sistema que se ha movido de una máquina de Windows a una máquina Unix y están teniendo problemas con el formato.

Necesito automatizar la traducción entre Unix / Windows antes de que los archivos lleguen al sistema en nuestro "sistema de transporte". Probablemente necesite algo para determinar el formato actual y algo para transformarlo en el otro formato. Si solo es la nueva línea, esa es la gran diferencia, entonces estoy considerando solo leer los archivos con java.io. Hasta donde yo sé, pueden manejar ambos con readLine. Y luego simplemente escriba cada línea de nuevo con

while (line = readline) print(line + NewlineInOtherFormat) ....

Resumen:

samjudson :

Esta es solo una diferencia en los archivos de texto, donde UNIX usa un solo Line Feed (LF) para indicar una nueva línea, Windows usa un Carriage Return / Line Feed (CRLF) y Mac usa solo un CR.

a lo que Cebjyre elabora:

OS X usa LF, al igual que UNIX - MacOS 9 y siguientes sí usaron CR

Mes

También podría haber una diferencia en la codificación de caracteres para caracteres nacionales. No existe una "codificación de Unix", pero muchas variantes de Linux usan UTF-8 como codificación predeterminada. Mac OS (que también es unix) usa su propia codificación (macroman). No estoy seguro de qué es la codificación predeterminada de windows.

McDowell

Además de las diferencias de nueva línea, la marca de orden de bytes puede causar problemas si los archivos se tratan como Unicode en Windows.

Cheekysoft

Sin embargo, otro conjunto de problemas que puede encontrar se puede relacionar con codificaciones de caracteres de un solo byte. Si ve caracteres extraños inesperados (no al final de la línea), esta podría ser la razón. Especialmente si ve cuadros cuadrados, signos de interrogación, signos de interrogación al revés, caracteres adicionales o caracteres acentuados inesperados.

Sadie

En Unix, archivos que comienzan con a. están escondidos. En Windows, es un indicador del sistema de archivos al que probablemente no tenga acceso fácil. Esto puede hacer que los archivos que se supone que están ocultos ahora se vuelvan visibles en las máquinas del cliente.

Los permisos de archivos varían entre los dos. Cuando copie archivos en un sistema Unix, probablemente encontrará que los archivos ahora pertenecen al usuario que realizó la copia y tienen derechos limitados. Tendrá que usar chown / chmod para asegurarse de que los usuarios correctos tengan acceso a ellos.

Existen herramientas para ayudar con el problema:

pauldoo

Si solo está interesado en el contenido de los archivos de texto, entonces sí, los finales de línea son diferentes. Eche un vistazo a algo como dos2unix, puede ser de ayuda aquí.

Cheekysoft

Como sugiere pauldoo, las herramientas como dos2unix pueden ser muy útiles. Tenga en cuenta que estos pueden estar en su sistema linux / unix como fromdos o tofrodos, o tal vez incluso como la recodificación de la caja de herramientas de uso general.

Ayuda para la codificación Java

Cheekysoft

Al escribir en archivos o leer desde archivos (que usted tiene el control), a menudo vale la pena especificar la codificación que utilizará, ya que la mayoría de los métodos de Java lo permiten. Sin embargo, también se asegura que el sistema local coincida puede ahorrar mucho dolor


Además de las respuestas dadas, puede encontrar problemas con los diferentes sistemas de archivos:

  • En Unix, archivos que comienzan con a . están escondidos. En Windows, es un indicador del sistema de archivos al que probablemente no tenga acceso fácil. Esto puede hacer que los archivos que se supone que están ocultos ahora se vuelvan visibles en las máquinas del cliente.

  • Los permisos de archivos varían entre los dos. Cuando copie archivos en un sistema Unix, probablemente encontrará que los archivos ahora pertenecen al usuario que realizó la copia y tienen derechos limitados. Tendrá que usar chown / chmod para asegurarse de que los usuarios correctos tengan acceso a ellos.


Como sugiere pauldoo, las herramientas como dos2unix pueden ser muy útiles. Tenga en cuenta que estos pueden estar en su sistema linux / unix como fromdos o tofrodos , o tal vez incluso como la recodificación de la caja de herramientas de uso general.

Sin embargo, otro conjunto de problemas que puede encontrar se puede relacionar con codificaciones de caracteres de un solo byte. Si ve caracteres extraños inesperados (no al final de la línea), esta podría ser la razón. Especialmente si ve cuadros cuadrados, signos de interrogación, signos de interrogación al revés, caracteres adicionales o caracteres acentuados inesperados.

Ejecutar la configuración regional del comando en su cuadro * nix le dirá cuál es la configuración regional del sistema. Si esto es diferente a la codificación utilizada en los archivos de texto que se han transferido desde la máquina de Windows, esto a veces puede causar problemas, dependiendo del uso de esos archivos. Puede utilizar el comando de recodificación muy poderoso para tratar de convertir entre los diferentes conjuntos de caracteres, así como cualquier problema de finalización de línea. recode -l le mostrará todos los formatos y codificaciones que la herramienta puede convertir. Es probable que sea una lista MUY larga.

Al escribir en archivos o leer desde archivos (que usted tiene el control), a menudo vale la pena especificar la codificación que utilizará, ya que la mayoría de los métodos de Java lo permiten. Sin embargo, también garantizar que la configuración regional del sistema coincida puede ahorrar mucho dolor.


Esta es solo una diferencia en los archivos de texto, donde UNIX usa un solo Line Feed (LF) para indicar una nueva línea, Windows usa un Carriage Return / Line Feed (CRLF) y Mac usa solo un CR.

Los archivos binarios no deberían tener ninguna diferencia (es decir, un JPEG en una máquina Windows será byte por byte lo mismo que el mismo JPEG en una caja Unix).


Si solo está interesado en el contenido de los archivos de texto, entonces sí, los finales de línea son diferentes. Eche un vistazo a algo como dos2unix , puede ser de ayuda aquí.

(Por supuesto, hay muchas otras cosas que hacen que los archivos de Unix y Windows sean diferentes, pero no creo que estés interesado en esas otras diferencias en este momento).


También podría haber una diferencia en la codificación de caracteres para caracteres nacionales. No existe una "codificación de Unix", pero muchas variantes de Linux usan UTF-8 como codificación predeterminada. Mac OS (que también es unix) usa su propia codificación (macroman). No estoy seguro de qué es la codificación predeterminada de windows.

Pero esta podría ser otra fuente de problemas (aparte de los diferentes saltos de línea).

¿Cuáles son tus problemas? Los problemas relacionados con el salto de línea se pueden corregir fácilmente con los programas dos2unix o unix2dos en la máquina Unix.