Дескрипторы файлов: продолжение
В зависимости от типа содержимого потока, все потоки делятся на текстовые и бинарные потоки.
Текстовые потоки структурированы в строки; то есть они содержат типографские символы (буквы, цифры, знаки пунктуации и т.д.), расположенные в строках (строках), как видно невооруженным глазом при просмотре содержимого файла в редакторе.
Этот файл записывается (или читается) в основном символ за символом или строка за строкой.
Бинарные потоки содержат не текст, а последовательность байтов любого значения. Эта последовательность может быть, например, исполняемой программой, изображением, аудио- или видеоклипом, файлом базы данных и т.д.
Поскольку эти файлы не содержат строк, операции чтения и записи относятся к частям данных любого размера. Следовательно, данные считываются/записываются побайтово или блочно, блок за блоком, где размер блока обычно варьируется от одного до произвольно выбранного значения.
Затем возникает проблема. В системах Unix/Linux концы строки отмечены одним символом с именем LF
(код 10 ASCII), обозначенным в программах Python как \n
.
Другие операционные системы, особенно те, которые получены из доисторической системы CP/M (которая также применяется к системам семейства Windows), используют другое соглашение: конец строки отмечен парой символов, CR
и LF
(коды ASCII 13 и 10), которые могут быть закодированы как \r\n
.
Эта двусмысленность может вызвать различные неприятные последствия.
Если Вы создаете программу, отвечающую за обработку текстового файла, и она написана для Windows, вы можете распознать концы строк, найдя символы \r\n
, но запуск той же программы в среде Unix/Linux будет абсолютно бесполезным, и наоборот: программа, написанная для систем Unix/Linux, может быть бесполезна в Windows.
Такие нежелательные функции программы, которые препятствуют использованию программы в различных средах, называются непереносимостью.
Аналогичным образом, черта программы, позволяющей выполнять ее в разных средах, называется переносимостью. Программа, наделенная такой чертой, называется переносимой программой.