module File::Constants
Модуль File::Constants определяет константы, связанные с файлами.
Здесь представлены два семейства констант:
-
Связанные с доступом к файлам.
-
Связанные с сопоставлением шаблонов имён файлов.
Константы файлов, определённые для локального процесса, можно получить с помощью метода File::Constants.constants:
File::Constants.constants.take(5) # => [:RDONLY, :WRONLY, :RDWR, :APPEND, :CREAT]
Доступ к файлам
Константы доступа к файлам можно передавать в качестве необязательного аргумента mode при вызове следующих методов:
Доступ для чтения и записи
Доступ к потоку для чтения и записи можно указать с помощью константы доступа к файлу.
Константу можно указать в составе побитового ИЛИ с другими подобными константами.
Можно указать любую комбинацию констант из этого раздела.
File::RDONLY
Флаг File::RDONLY указывает, что поток следует открыть только для чтения:
filepath = '/tmp/t.tmp'
f = File.new(filepath, File::RDONLY)
f.write('Foo') # Raises IOError (not opened for writing).
File::WRONLY
Флаг File::WRONLY указывает, что поток следует открыть только для записи:
f = File.new(filepath, File::WRONLY) f.read # Raises IOError (not opened for reading).
File::RDWR
Флаг File::RDWR указывает, что поток следует открыть для чтения и записи:
f = File.new(filepath, File::RDWR)
f.write('Foo') # => 3
f.rewind # => 0
f.read # => "Foo"
Позиционирование в файле
File::APPEND
Флаг File::APPEND указывает, что поток следует открыть в режиме добавления.
Перед каждой операцией записи позиция устанавливается в конец потока. Изменение позиции и следующая за ним операция записи выполняются как единый атомарный шаг.
File::TRUNC
Флаг File::TRUNC указывает, что поток следует усечь в начале. Если файл существует и успешно открыт для записи, он усекается до нулевой позиции; значения его ctime и mtime обновляются.
Для специального файла FIFO или терминального устройства этот флаг не действует. Действие для файлов других типов определяется реализацией. Результат использования File::TRUNC с File::RDONLY не определён.
Создание и сохранение
File::CREAT
Флаг File::CREAT указывает, что поток следует создать, если он ещё не существует.
Если файл существует:
- Raise an exception if File::EXCL is also specified. - Otherwise, do nothing.
Если файл не существует, он создаётся. При успешном завершении обновляются значения atime, ctime и mtime файла, а также ctime и mtime родительского каталога.
File::EXCL
Флаг File::EXCL указывает, что поток не должен существовать; если указаны оба флага — File::CREAT и File::EXCL, — а поток уже существует, возникает исключение.
Проверка существования файла и его создание выполняются как атомарная операция.
Если указаны оба флага — File::EXCL и File::CREAT, — а путь указывает на символическую ссылку, возникает исключение независимо от содержимого символической ссылки.
Если указан File::EXCL, но не указан File::CREAT, результат не определён.
Константы файлов POSIX
Некоторые константы доступа к файлам определены только в POSIX-совместимых системах:
-
File::SYNC.
-
File::DSYNC.
-
File::RSYNC.
-
File::DIRECT.
-
File::NOATIME.
-
File::NOCTTY.
-
File::NOFOLLOW.
-
File::TMPFILE.
File::SYNC, File::RSYNC и File::DSYNC
Флаг File::SYNC, File::RSYNC или File::DSYNC задаёт синхронизацию операций ввода-вывода с базовой файловой системой.
Эти флаги действуют только в POSIX-совместимых системах.
-
File::SYNC указывает, что все операции записи (данных и метаданных) должны немедленно сбрасываться на базовое устройство хранения. Это означает, что данные записываются на устройство хранения, а метаданные файла (например, размер файла, временные метки и разрешения) также синхронизируются. Это гарантирует, что данные будут безопасно сохранены на носителе до возврата управления вызывающей программе. Этот флаг может существенно снизить производительность, поскольку требует синхронной записи, которая может быть медленнее асинхронной.
-
File::RSYNC указывает, что операции чтения файла не будут возвращать результат, пока не будут синхронизированы все ожидающие операции записи (которые уже запущены, но ещё не завершены). Это полезно, когда необходимо прочитать самые актуальные данные, которые всё ещё могут записываться.
-
File::DSYNC указывает, что все операции записи данных должны немедленно сбрасываться на базовое устройство хранения; этим он отличается от File::SYNC, для которого требуется синхронизация также и метаданных.
Обратите внимание, что поведение этих флагов может немного различаться в зависимости от используемой операционной системы и файловой системы. Кроме того, использование этих флагов может повлиять на производительность из-за синхронного характера операций ввода-вывода, поэтому их следует применять осмотрительно, особенно в приложениях, критичных к производительности.
File::NOCTTY
Флаг File::NOCTTY указывает, что если поток является терминальным устройством, это устройство не становится управляющим терминалом процесса.
Определён только в POSIX-совместимых системах.
File::DIRECT
Флаг File::DIRECT запрашивает минимизацию влияния кэша на операции ввода-вывода в поток и из него.
Определён только в POSIX-совместимых системах.
File::NOATIME
Флаг File::NOATIME указывает, что открытие потока не должно изменять время последнего доступа к нему (atime).
Определён только в POSIX-совместимых системах.
File::NOFOLLOW
Флаг File::NOFOLLOW указывает, что если путь является символической ссылкой, переходить по ней не следует.
Определён только в POSIX-совместимых системах.
File::TMPFILE
Флаг File::TMPFILE указывает, что открываемый поток должен быть новым временным файлом.
Определён только в POSIX-совместимых системах.
Другие константы доступа к файлам
File::NONBLOCK
Если возможно, файл открывается в неблокирующем режиме. Ни операция открытия, ни последующие операции ввода-вывода с файлом не заставят вызывающий процесс ждать.
File::BINARY
Флаг File::BINARY указывает, что доступ к потоку должен осуществляться в двоичном режиме.
File::SHARE_DELETE
Флаг File::SHARE_DELETE позволяет другим процессам открывать поток с доступом на удаление.
Только Windows.
Если поток открыт с локальным доступом на удаление без File::SHARE_DELETE, а другой процесс пытается открыть его с доступом на удаление, попытка завершается неудачей и поток не открывается для этого процесса.
Блокировки
С блокировкой потоков связаны четыре файловые константы; см. File#flock:
File::LOCK_EX
Флаг File::LOCK_EX задаёт эксклюзивную блокировку; одновременно блокировать поток может только один процесс.
File::LOCK_NB
Флаг File::LOCK_NB задаёт неблокирующую блокировку потока; его можно использовать вместе с File::LOCK_EX или File::LOCK_SH.
File::LOCK_SH
Флаг File::LOCK_SH указывает, что несколько процессов могут одновременно блокировать поток.
File::LOCK_UN
Флаг File::LOCK_UN указывает, что поток не следует блокировать.
Константы сопоставления шаблонов имён файлов (File::FNM_*)
Константы сопоставления шаблонов имён файлов можно передавать в качестве необязательного аргумента flags при вызове следующих методов:
Константы:
File::FNM_CASEFOLD
Флаг File::FNM_CASEFOLD делает шаблоны регистронезависимыми для File.fnmatch (но не для Dir.glob).
File::FNM_DOTMATCH
Флаг File::FNM_DOTMATCH позволяет шаблону '*' совпадать с именем файла, начинающимся с '.'.
File::FNM_EXTGLOB
Флаг File::FNM_EXTGLOB включает шаблон '{a,b}', который соответствует шаблону «a» и шаблону «b»; действует подобно объединению регулярных выражений (например, '(?:a|b)'):
pattern = '{LEGAL,BSDL}'
Dir.glob(pattern) # => ["LEGAL", "BSDL"]
Pathname.glob(pattern) # => [#<Pathname:LEGAL>, #<Pathname:BSDL>]
pathname.glob(pattern) # => [#<Pathname:LEGAL>, #<Pathname:BSDL>]
File::FNM_NOESCAPE
Флаг File::FNM_NOESCAPE отключает экранирование '\'.
File::FNM_PATHNAME
Флаг File::FNM_PATHNAME указывает, что шаблоны '*' и '?' не соответствуют разделителю каталогов (значению константы File::SEPARATOR).
File::FNM_SHORTNAME
Флаг File::FNM_SHORTNAME позволяет шаблонам соответствовать коротким именам, если они существуют.
Только Windows.
File::FNM_SYSCASE
Флаг File::FNM_SYSCASE указывает, что чувствительность к регистру определяется используемой операционной системой; действует для File.fnmatch, но не для Dir.glob.
Другие константы
File::NULL
Флаг File::NULL содержит строковое значение устройства null:
-
В Unix-подобных ОС —
'/dev/null'. -
В Windows —
'NUL'.
Константы
- APPEND
- BINARY
- CREAT
- DIRECT
- DSYNC
- EXCL
- FNM_CASEFOLD
- FNM_DOTMATCH
- FNM_EXTGLOB
- FNM_NOESCAPE
- FNM_PATHNAME
- FNM_SHORTNAME
- FNM_SYSCASE
- LOCK_EX
- LOCK_NB
- LOCK_SH
- LOCK_UN
- NOATIME
- NOCTTY
- NOFOLLOW
- NONBLOCK
- NULL
- RDONLY
- RDWR
- RSYNC
- SHARE_DELETE
- SYNC
- TMPFILE
- TRUNC
- WRONLY
Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.