Module (23%)
Section (50%)

Дескрипторы файлов: продолжение

В зависимости от типа содержимого потока, все потоки делятся на текстовые и бинарные потоки.

Текстовые потоки структурированы в строки; то есть они содержат типографские символы (буквы, цифры, знаки пунктуации и т.д.), расположенные в строках (строках), как видно невооруженным глазом при просмотре содержимого файла в редакторе.

Этот файл записывается (или читается) в основном символ за символом или строка за строкой.

 

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

Поскольку эти файлы не содержат строк, операции чтения и записи относятся к частям данных любого размера. Следовательно, данные считываются/записываются побайтово или блочно, блок за блоком, где размер блока обычно варьируется от одного до произвольно выбранного значения.

 

Затем возникает проблема. В системах Unix/Linux концы строки отмечены одним символом с именем LF (код 10 ASCII), обозначенным в программах Python как \n.

Другие операционные системы, особенно те, которые получены из доисторической системы CP/M (которая также применяется к системам семейства Windows), используют другое соглашение: конец строки отмечен парой символов, CR и LF (коды ASCII 13 и 10), которые могут быть закодированы как \r\n.




Text vs. binary streams concept


Эта двусмысленность может вызвать различные неприятные последствия.

Если Вы создаете программу, отвечающую за обработку текстового файла, и она написана для Windows, вы можете распознать концы строк, найдя символы \r\n, но запуск той же программы в среде Unix/Linux будет абсолютно бесполезным, и наоборот: программа, написанная для систем Unix/Linux, может быть бесполезна в Windows.

Такие нежелательные функции программы, которые препятствуют использованию программы в различных средах, называются непереносимостью.

Аналогичным образом, черта программы, позволяющей выполнять ее в разных средах, называется переносимостью. Программа, наделенная такой чертой, называется переносимой программой.