Spec-Zone.ru › Ruby 4.0
  1. File::
  2. Константы

модуль File::Constants

Модуль File::Constants определяет константы, связанные с файлами.

Здесь есть два семейства констант:

  • Константы, связанные с доступом к файлам.

  • Константы, связанные с подстановкой шаблонов в именах файлов.

Константы файлов, определённые для локального процесса, можно получить с помощью метода File::Constants.constants:

File::Constants.constants.take(5)
# => [:RDONLY, :WRONLY, :RDWR, :APPEND, :CREAT]

Доступ к файлам

Константы доступа к файлам можно использовать с необязательным аргументом mode при вызове следующих методов:

  • File.new.

  • File.open.

  • IO.for_fd.

  • IO.new.

  • IO.open.

  • IO.popen.

  • IO.reopen.

  • IO.sysopen.

  • StringIO.new.

  • StringIO.open.

  • StringIO#reopen.

Доступ для чтения и записи

Доступ к потоку для чтения и записи можно задать с помощью константы доступа к файлу.

Константу можно указать как часть побитовой операции ИЛИ с другими подобными константами.

Можно указать любое сочетание констант из этого раздела.

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 при вызове следующих методов:

  • Dir.glob.

  • File.fnmatch.

  • Pathname#fnmatch.

  • Pathname.glob.

  • Pathname#glob.

Константы:

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 содержит строковое значение нулевого устройства:

  • В Unix-подобных ОС — '/dev/null'.

  • В Windows — 'NUL'.

Константы

APPEND

File::APPEND

BINARY

File::BINARY

CREAT

File::CREAT

DIRECT

File::DIRECT

DSYNC

File::DSYNC

EXCL

File::EXCL

FNM_CASEFOLD

File::FNM_CASEFOLD

FNM_DOTMATCH

File::FNM_DOTMATCH

FNM_EXTGLOB

File::FNM_EXTGLOB

FNM_NOESCAPE

File::FNM_NOESCAPE

FNM_PATHNAME

File::FNM_PATHNAME

FNM_SHORTNAME

File::FNM_SHORTNAME

FNM_SYSCASE

File::FNM_SYSCASE

LOCK_EX

File::LOCK_EX

LOCK_NB

File::LOCK_NB

LOCK_SH

File::LOCK_SH

LOCK_UN

File::LOCK_UN

NOATIME

File::NOATIME

NOCTTY

File::NOCTTY

NOFOLLOW

File::NOFOLLOW

NONBLOCK

File::NONBLOCK

NULL

File::NULL

RDONLY

File::RDONLY

RDWR

File::RDWR

RSYNC

File::RSYNC

SHARE_DELETE

File::SHARE_DELETE

SYNC

File::SYNC

TMPFILE

File::TMPFILE

TRUNC

File::TRUNC

WRONLY

File::WRONLY

Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API