Spec-Zone.ru › Ruby 3.4

модуль 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’; ведет себя как объединение 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

Флаг 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–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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