Spec-Zone.ru › Ruby 3.3

модуль 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 (только Windows)

Флаг File::SHARE_DELETE позволяет другим процессам открывать поток с доступом для удаления.

Если поток открыт для (локального) удаления без 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’; ведёт себя как объединение regexp union (например, '(?: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 (только Windows)

END_OF_DOCUMENT_MARKER

Флаг File::FNM_SHORTNAME разрешает шаблонам соответствовать коротким именам, если они существуют.

File::FNM_SYSCASE

Флаг File::FNM_SYSCASE указывает, что чувствительность к регистру совпадает с чувствительностью к регистру в операционной системе; эффективно для File.fnmatch, но не для Dir.glob.

Другие константы

File::NULL

Флаг File::NULL содержит строковое значение устройства 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–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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