разница между текстовым файлом и двоичным файлом - PullRequest
36 голосов
/ 18 мая 2011

Почему мы должны различать текстовые файлы и двоичные файлы при их передаче? Почему есть некоторые каналы, предназначенные только для текстовых данных? На нижнем уровне они все биты.

Ответы [ 5 ]

22 голосов
/ 18 мая 2011

На нижнем уровне они все биты ... правда. Однако некоторые каналы передачи имеют семь битов на байт, а другие каналы передачи имеют восемь битов на байт. Если вы передаете текст ASCII по семибитному каналу, то все в порядке. Двоичные данные искажены.

Кроме того, разные системы используют разные соглашения для окончаний строк: LF и CRLF являются общими, но некоторые системы используют CR или NEL. Режим передачи текста автоматически преобразует окончания строк, что приведет к повреждению двоичных файлов.

Однако все это в основном представляет исторический интерес в наши дни. Большинство каналов передачи являются восьмибитными (например, HTTP), и большинству пользователей подходит любой конец строки, который они получают.

Некоторые примеры 7-битных каналов: SMTP (номинально, без расширений), SMS, Telnet, некоторые последовательные соединения. Интернет не всегда был построен на TCP / IP, и это показывает.

Кроме того, в спецификации HTTP указано, что

В канонической форме медиа-подтипы типа «текст» используют CRLF в качестве разрыва текстовой строки. HTTP ослабляет это требование и позволяет транспортировать текстовые носители с одним простым CR или LF, представляющим разрыв строки, когда это делается последовательно для всего тела объекта.

8 голосов
/ 04 декабря 2011

Все файлы сохраняются в одном из двух форматов файла - двоичном или текстовом.Два типа файлов могут выглядеть одинаково на поверхности, но их внутренние структуры различны.

Хотя двоичные и текстовые файлы содержат данные, хранящиеся в виде последовательности (биты (двоичные значения 1 и Os), биты в текстовых файлах представляют символы, а биты в двоичных файлах представляют пользовательские данные.

5 голосов
/ 18 мая 2011

Различие между ними важно, поскольку разные ОС по-разному обрабатывают текстовые файлы. Например, в * nix вы заканчиваете свои строки просто \n, в то время как в ОС MS вы используете \r\n, а в Mac - \n\r. Программное обеспечение, такое как FTP-клиенты, пытается изменить окончания строк в текстовых файлах в соответствии с целевой ОС, добавляя / удаляя символы. Это сделано для того, чтобы текстовый файл правильно смотрелся в целевой ОС.

например, если вы создадите текстовый файл в * nix с разрывами строк и попытаетесь скопировать его в окно Windows как двоичный файл и открыть его в блокноте, вы не увидите ни одного конца строки, а просто засорение текста.

2 голосов
/ 28 мая 2015

Важно добавить к уже предоставленным ответам, что текстовые файлы и двоичные файлы представляют байты, но текстовые файлы отличаются от двоичных файлов тем, что байты понимаются как символы. Отображение байтов в символы выполняется последовательно по файлу с использованием определенной кодовой страницы или Unicode. При использовании 7- или 8-битных кодовых страниц вы можете вращать диск при чтении этих файлов и интерпретировать их как английский алфавит, немецкий алфавит, русский алфавит или другие. Это вращение диска не влияет на байты, оно влияет на то, какие символы выбраны в соответствии с байтами.

Как уже заявляли другие, существует также проблема кодирования разделителей разрыва строки, которые уникальны для текстовых файлов и могут различаться в зависимости от платформы. «Разрыв строки» - это не буква в нашем алфавите или символ, который вы можете написать, поэтому к нему применяются другие правила.

Для двоичных файлов не существует неявного соглашения о кодировке символов или об определении «строки».

0 голосов
/ 01 марта 2016

Все файлы машинного языка на самом деле являются бинарными файлами.

Для открытия бинарного файла в файле fopen необходимо указать режим файла как "rb" или "wb".В противном случае все файлы открываются в режиме по умолчанию, то есть в текстовом режиме.

Можно отметить, что текстовые файлы также могут храниться и обрабатываться как двоичные файлы, но не наоборот.

Двоичные файлы отличаютсяиз текстового файла двумя способами:

  1. Хранение символов новой строки
  2. Символ EOF

Например:

  • wt-t обозначает текстовый файл
  • Wb-b обозначает двоичный файл

Двоичные файлы не хранят никаких специальных символов в конце, либо конец файла проверяется путем использования самого их размера.

...