Erlang 查看文件屬性

2009-03-29
要查看某文件F的屬性,我們可以調用file:read_file_info(F),如果F係一個有效的文件或目錄名,則函數返回{ok, Info},Info係一個#file_info類型的record,包含如下項:
size:文件的大小(字節);
type:類型,可能為:device, directory, regular, other;
access:讀寫模式,可能為:read, write, read_write, none;
atime:文件最后一次被讀的本地時間:{{Year, Mon, Day}, {Hour, Min, Sec}};
mtime:文件最后一次被寫入的本地時間;
ctime:此項對不同的操作系統有不同的意義,在Unix下為文件或inode最后一次更改的時間,在Windows下為文件的創建時間;
mode:(整數)文件權限;
links:連接到該文件的鏈接個數(如果文件系統不支持連接則為1);
major_device:(整數)用于標識文件系統(Unix)或設備號(A:=0, B:=1)(Windows)。

mode和access的功能其實係一樣的,不過你可以用mode來一次過設置多個文件的屬性。下例演示如何查看文件的大小和類型(注意需要包含file.hrl文件,其包含了#file_info的定義):
-include_lib("kernel/include/file.hrl").
file_size_and_type(File) ->
case file:read_file_info(File) of
{ok, Facts} ->
{Facts#file_info.type, Facts#file_info.size};
_ ->
error
end.

還有一种更為方便的方式,filelib模塊里包含了一些諸如file_size(File)和is_dir(X)的函數,如果你僅需得到文件的大小信息,直接調用file_size(File)就可以了,不用使用file:read_file_info那么囉嗦~~

譯自《Programming Erlang》- Chapter 13 - Programming with Files

M-OSCAR | Powered by Blogger | Entries (RSS) | Comments (RSS) | Designed by MB Web Design | XML Coded By Cahayabiru.com