diferencia entre archivo de texto y archivo binario


¿Por qué debemos distinguir entre archivos de texto y archivos binarios al transmitirlos? ¿Por qué hay algunos canales diseñados solo para datos textuales? En el nivel inferior, todos son bits.

Author: andrew, 2011-05-18

5 answers

En el nivel inferior, todos son bits... verdadero. Sin embargo, algunos canales de transmisión tienen siete bits por byte, y otros canales de transmisión tienen ocho bits por byte. Si transmite texto ASCII a través de un canal de siete bits, entonces todo está bien. Los datos binarios quedan destrozados.

Además, diferentes sistemas usan diferentes convenciones para las terminaciones de línea: LF y CRLF son comunes, pero algunos sistemas usan CR o NEL. Un modo de transmisión de texto convertirá los finales de línea automáticamente, lo que dañar archivos binarios.

Sin embargo, todo esto es principalmente de interés histórico en estos días. La mayoría de los canales de transmisión son de ocho bits (como HTTP) y la mayoría de los usuarios están bien con cualquier final de línea que obtengan.

Algunos ejemplos de canales de 7 bits: SMTP (nominalmente, sin extensiones), SMS, Telnet, algunas conexiones serie. Internet no siempre se construyó en TCP / IP, y se nota.

Además, la especificación HTTP indica que,

Cuando está en forma canónica, los subtipos de medios del tipo "texto" usan CRLF como salto de línea de texto. HTTP relaja este requisito y permite el transporte de medios de texto con CR o LF simples que representan un salto de línea cuando se realiza de manera consistente para toda una entidad-cuerpo.

 20
Author: Dietrich Epp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-18 02:03:40

Todos los archivos se guardan en uno de los dos formatos de archivo: binario o texto. Los dos tipos de archivo pueden verse iguales en la superficie, pero sus estructuras internas son diferentes.

Mientras que los archivos binarios y de texto contienen datos almacenados como una serie de (bits (valores binarios de 1s y Os), los bits en los archivos de texto representan caracteres, mientras que los bits en los archivos binarios representan datos personalizados.

 7
Author: munendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-04 09:16:41

Distinguir entre los dos es importante ya que los diferentes OSs tratan los archivos de texto de manera diferente. Por ejemplo, en *nix terminas tus líneas con solo \n mientras que en MS OSs usas \r\n y en Macs usas \n\r. Software como los clientes FTP tratan de cambiar los finales de línea en los archivos de texto para que coincida con el sistema operativo de destino mediante la adición / eliminación de los caracteres. Esto es para asegurarse de que el archivo de texto se verá correctamente en el sistema operativo de destino.

Por ejemplo, si crea un archivo de texto en *nix con line se rompe e intenta copiarlo a un cuadro de Windows como un archivo binario y abrirlo en el bloc de notas, no verá ninguno de los finales de línea, sino solo una obstrucción de texto.

 5
Author: Rasika,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-18 01:57:10

Importante agregar a las respuestas ya proporcionadas es que los archivos de texto y los archivos binarios representan bytes, pero los archivos de texto difieren de los archivos binarios en que se entiende que los bytes representan caracteres. La asignación de bytes a caracteres se realiza de forma consistente sobre el archivo utilizando una página de código o Unicode determinada. Al usar páginas de código de 7 u 8 bits, puede girar el dial al leer estos archivos e interpretarlos con un alfabeto inglés, un alfabeto alemán, un alfabeto ruso u otros. Este girar el dial no afecta a los bytes, sino a los caracteres elegidos para corresponder a los bytes.

Como otros han dicho, también existe el problema de la codificación de los separadores de saltos de línea, que es exclusivo de los archivos de texto y que puede diferir de una plataforma a otra. El "salto de línea" no es una letra en nuestro alfabeto o un símbolo que pueda escribir, por lo que se le aplican otras reglas.

Con los archivos binarios no hay ninguna convención implícita sobre la codificación de caracteres o sobre definición de "línea".

 1
Author: Mishax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-28 10:18:02

Todos los archivos de lenguaje máquina son en realidad archivos binarios.

Para abrir un archivo binario, el modo archivo tiene que ser mencionado como "rb"o "wb"en el comando fopen. De lo contrario, todos los archivos se abren en el modo predeterminado, que es el modo de texto.

Cabe señalar que los archivos de texto también se pueden almacenar y procesar como archivos binarios, pero no viceversa.

Los archivos binarios difieren del archivo de texto de 2 maneras:

  1. El almacenamiento de caracteres de nueva línea
  2. El EOF carácter

Eg:

  • wt-t significa textfile
  • Wb-b significa binaryfile

Los archivos binarios no almacenan ningún carácter especial al final.

 -1
Author: user6003105,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-01 15:30:13