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}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。