模块 File::Constants

模块 File::Constants 定义了与文件相关的常量。

这里有两个常量系列

可以使用方法 File::Constants.constants 检索为本地进程定义的文件常量

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

文件访问

文件访问常量可以与以下方法的可选参数 mode 一起使用

读/写访问

可以通过文件访问常量指定流的读写访问。

常量可以作为其他此类常量的按位 OR 的一部分指定。

可以指定本节中常量的任意组合。

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::RSYNC 和 File::DSYNC

标志 File::SYNC、File::RSYNC 或 File::DSYNC 指定 I/O 操作与底层文件系统的同步。

这些标志仅对兼容 POSIX 的系统有效。

请注意,这些标志的行为可能会因所使用的操作系统和文件系统而略有不同。此外,由于 I/O 操作的同步特性,使用这些标志可能会对性能产生影响,因此应谨慎使用,尤其是在对性能至关重要的应用程序中。

File::NOCTTY

标志 File::NOCTTY 指定如果流是终端设备,则该设备不会成为进程的控制终端。

仅对兼容 POSIX 的系统定义。

File::DIRECT

标志 File::DIRECT 请求最大程度地减少流到和来自 I/O 的缓存效果。

仅对兼容 POSIX 的系统定义。

File::NOATIME

标志 File::NOATIME 指定打开流的行为不应修改其访问时间 (atime)。

仅对兼容 POSIX 的系统定义。

File::NOFOLLOW

标志 File::NOFOLLOW 指定如果路径是符号链接,则不应遵循。

仅对兼容 POSIX 的系统定义。

File::TMPFILE

标志 File::TMPFILE 指定打开的流应为新的临时文件。

仅对兼容 POSIX 的系统定义。

其他文件访问常量

File::NONBLOCK

如果可能,文件将以非阻塞模式打开。打开操作或对文件执行的任何后续 I/O 操作都不会导致调用进程等待。

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 一起使用

常量为

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(仅限 Windows)

标志 File::FNM_SHORTNAME 允许模式匹配短名称(如果存在)。

File::FNM_SYSCASE

标志 File::FNM_SYSCASE 指定区分大小写与否与底层操作系统相同;对 File.fnmatch 有效,但对 Dir.glob 无效。

其他常量

File::NULL

标志 File::NULL 包含空设备的字符串值

常量

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