Открытие потоков: режимы
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() вызовет исключение.