跳至內容

Erlang程式設計與問題解決/檔案

維基教科書,自由的教學讀本

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 第三個參數用於指定開始行數。

(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 term

~p 與~w類似,不過當多行時將自動換行

~n 顯然,換行符

(2)寫入整個文件: file:write_file(File, IO) 其中IO可以為list、integer或者binary類型

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

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