read_file_info(File) -> {ok, FileInfo} | {error, Reason}
read_file_info(File, Opts) -> {ok, FileInfo} | {error, Reason}
OTP R15BFile = name_all() | io_device()
Opts = [file_info_option()]
FileInfo = file_info()
Reason = posix() | badarg
检索有关文件的信息。如果成功则返回{ok, FileInfo}
,否则返回{error, Reason}
。 FileInfo
是一条记录 file_info
,在内核包含文件 file.hrl
中定义。在调用该函数的模块中包含以下指令:
-include_lib("kernel/include/file.hrl").
atime
、 mtime
和 ctime
中返回的时间类型取决于 Opts :: {time, Type}
中设置的时间类型,如下所示:
local
-
返回当地时间。
universal
-
返回通用时间。
posix
-
返回 Unix 时间纪元(即 1970-01-01 00:00 UTC)以来或之前的秒数。
默认为 {time, local}
。
如果选项raw
设置后,不会调用文件服务器,仅返回本地文件信息。请注意,这将破坏该模块的原子性保证,因为它可能会与并发调用竞争write_file_info/1,2
.
当为函数指定 I/O 设备而不是文件名时,此选项无效。使用open/2
与raw
模式首先获取文件说明符。
由于大多数操作系统上的文件时间都以 POSIX 时间存储,因此使用选项 posix
查询文件信息会更快。
记录file_info
包含以下字段:
size = integer() >= 0
-
文件大小(以字节为单位)。
type = device | directory | other | regular
-
文件的类型。还可以包含
symlink
当返回时read_link_info/1,2. access = read | write | read_write | none
-
当前系统对该文件的访问权限。
atime =
date_time()
| integer() >= 0
-
上次读取文件的时间。
mtime =
date_time()
| integer() >= 0
-
上次写入文件的时间。
ctime =
date_time()
| integer() >=0
-
该时间字段的解释取决于操作系统。在 Unix 上,这是文件或
inode
最后一次更改的时间。在 Windows 中,这是创建时间。 mode = integer() >= 0
-
文件权限为以下位值的总和:
8#00400
-
读取权限:所有者
8#00200
-
写权限:所有者
8#00100
-
执行权限:所有者
8#00040
-
读取权限:组
8#00020
-
写权限:组
8#00010
-
执行权限:组
8#00004
-
读取权限:其他
8#00002
-
写权限: 其他
8#00001
-
执行权限: 其他
16#800
-
执行时设置用户 ID
16#400
-
执行时设置组ID
在 Unix 平台上,可以设置上面列出的其他位。
links = integer() >= 0
-
文件的链接数(对于没有链接概念的文件系统,该值始终为 1)。
major_device = integer() >= 0
-
标识文件所在的文件系统。在 Windows 中,数字表示驱动器,如下所示:0 表示 A:,1 表示 B:,依此类推。
minor_device = integer() >= 0
-
仅对 Unix 上的字符设备有效。在所有其他情况下,该字段为零。
inode = integer() >= 0
-
给出
inode
编号。在非 Unix 文件系统上,该字段为零。 uid = integer() >= 0
-
指示文件的所有者。在非 Unix 文件系统上,该字段为零。
gid = integer() >= 0
-
给出文件所有者所属的组。在非 Unix 文件系统上,该字段为零。
典型错误原因:
eacces
-
缺少文件父目录之一的搜索权限。
enoent
-
该文件不存在。
enotdir
-
文件名的组成部分不是目录。在某些平台上,会返回
enoent
。
相关用法
- erlang read_file_info(Filename)用法及代码示例
- erlang reverse用法及代码示例
- erlang rename用法及代码示例
- erlang remove用法及代码示例
- erlang registered用法及代码示例
- erlang register用法及代码示例
- erlang repair_continuation(Continuation, MatchSpec)用法及代码示例
- erlang register(RegName, PidOrPort)用法及代码示例
- erlang registered()用法及代码示例
- erlang remove(Key, Map1)用法及代码示例
- erlang referenced_byte_size(Binary)用法及代码示例
- erlang replace(Subject, Pattern, Replacement, Options)用法及代码示例
- erlang receive_response(RequestId, Timeout)用法及代码示例
- erlang replace(String, SearchPattern, Replacement)用法及代码示例
- erlang reverse(String :: unicode:chardata())用法及代码示例
- erlang reverse(List1, Tail)用法及代码示例
- erlang replace(Subject, RE, Replacement, Options)用法及代码示例
- erlang relation_to_family(BinRel)用法及代码示例
- erlang relative_product(ListOfBinRels)用法及代码示例
- erlang relative_product1(BinRel1, BinRel2)用法及代码示例
- erlang restriction(BinRel1, Set)用法及代码示例
- erlang restriction(SetFun, Set1, Set2)用法及代码示例
- erlang recv(Socket)用法及代码示例
- erlang recompose(URIMap)用法及代码示例
- erlang resolve(RefURI, BaseURI)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 read_file_info(File) -> {ok, FileInfo} | {error, Reason}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。