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).