модуль 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’; ведет себя как объединение 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
- 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–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.