script - variables de entorno java windows 10




Diferencias entre archivos Unix y Windows (4)

¿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 diferencias de nueva línea, la marca de orden de bytes puede causar problemas si los archivos se tratan como Unicode en Windows.


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.


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).





file