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