Erlang之IO編程

Erlang用於操縱文件I/O的模塊有:
file模塊:打開、讀、寫、關閉文件已經操做目錄的方法基本都在這裏

filename模塊:提供平臺獨立方式用於操縱文件名

filelib模塊:file模塊的擴展,提供了更多的實用工具,在file模塊基礎上構建

io模塊:一系列用於操做打開的文件的方法,解析格式、格式化輸出等等。

1.打開文件:
{ok,F}=file:open("data1.dat",read). %讀模式打開
{ok,F}=file:open("data1.dat",write). %寫模式
{ok,F}=file:open("data1.dat",[read,write]). %讀、寫、二進制模式

支持的全部模式參見文檔。

2.讀取:
(1)若是以一個Erlang term的方式讀取,採用:
io:read(F,'').
其中第二個參數是提示符,用於在標準輸入時做爲提示。
這個方法有一個變形read/3
read(IoDevice, Prompt, StartLine)
第三個參數用於指定開始行數。

(2)若是是按字節讀取,文件必須按raw模式打開採用:
{ok, Data}=file:read(F,100).

(3)按行讀取:
io:get_line(F, '').

(4)讀取整個文件的內容:
{ok,Binary}=file:read_file("data1.dat").
注意返回的是一個binary類型

(5)隨機讀取:
{ok,Binary}=file:pread(F, 22, 46).

其中第二個參數是開始位置,第三個參數是讀取的長度,返回的也是binary類型。

3.寫入文件:
(1)採用io:format/3方法:
{ok, S} = file:open("test2.dat", write).
io:format(S, "~s~n", ["Hello readers"]).
io:format(S, "~w~n", [123]).

其中的~開頭的字符是一個個格式化命令,好比常見的:
~c   anscii碼
~f   浮點數
~s   字符串
~w   Erlang term
~p   與~w相似,不過當多行時將自動換行
~n   顯然,換行符

(2)寫入整個文件:
file:write_file(File, IO)

其中IO能夠爲list、integer或者binary類型

(3)隨機寫入:
file:pwrite(F, 10, <<"new">>)

4.關閉文件:
file:close(F).

5.目錄操做:
都是linux命令風格的操做,
cd("/home/dennis/").  %進入目錄
file:list_dir(".").   %列出當前目錄文件
file:make_dir("test").  %建立test目錄
file:del_dir("test").   %刪除test目錄

6.獲取文件信息,好比文件大小,最後修改時間等等。調用file:read_file_info/1方法,該方法返回一個file_info記錄類型,裏面擁有文件的具體信息,好比type、size等。
{ok, Facts} =file:read_file_info(File).
io:format("~s~n",{Facts#file_info.type, Facts#file_info.size}).

7.複製和刪除文件:
file:copy(Source, Destination).
file:delete(File).

    這個筆記僅僅記錄了一些經常使用到的方法,一些高級的工具方法並無涉及,具體參考Erlang的文檔。linux

相關文章
相關標籤/搜索