Module (25%)
Section (67%)

Открытие потоков: режимы

r Режим открытия: чтение

  • поток будет открыт в режиме чтения;
  • файл, связанный с потоком, должен существовать и должен быть читаемым; в противном случае функция open() вызывает исключение.

w Режим открытия: запись

  • поток будет открыт в режиме записи;
  • файл, связанный с потоком, не обязан существовать; если он не существует, он будет создан; если он существует, он будет обрезан до нулевой длины (стерт); если создание невозможно (например, из-за системных разрешений), функция open() вызывает исключение.

a Режим открытия: добавление

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

r+ Режим открытия: чтение и добавление

  • поток будет открыт в режиме чтения и добавления;
  • файл, связанный с потоком, должен существовать и должен быть доступен для записи, в противном случае функция open() вызывает исключение;
  • для потока разрешены как операции чтения, так и записи.

w+ Режим открытия: запись и добавление

  • поток будет открыт в режиме записи и добавления;
  • файл, связанный с потоком, не обязан существовать; если он не существует, он будет создан; предыдущее содержимое файла остается нетронутым;
  • для потока разрешены как операции чтения, так и записи.


Выбор текстового или двоичного режима

Если в конце строки режима есть буква b, это означает, что поток должен быть открыт в двоичном режиме.

Если строка режима заканчивается буквой t, поток открывается в текстовом режиме.

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

Наконец, успешное открытие файла установит текущую позицию файла (виртуальную головку чтения/записи) перед первым байтом файла, если режим не a и после последнего байта файла, если установлен режим a.


Текстовый режим Двоичный режим Описание
rt rb чтение
wt wb запись
at ab добавление
r+t r+b чтение и обновление
w+t w+b запись и обновление

Дополнение

Вы также можете открыть файл для его эксклюзивного создания. Вы можете сделать это, используя открытый режим x. Если файл уже существует, функция open() вызовет исключение.