天天看點

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

<a><code>read(iodevice, prompt, startline)</code></a>

第三個參數用于指定開始行數。

(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   字元串

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

~n   顯然,換行符

(2)寫入整個檔案:

file:write_file(file, io)

其中io可以為list、integer或者binary類型

(3)随機寫入:

file:pwrite(f, 10, &lt;&lt;"new"&gt;&gt;)

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的文檔。

文章轉自莊周夢蝶  ,原文釋出時間2007-09-27

下一篇: JPA學習