Erlang IO编程之文件目录操作常用方法小结(erlang编程指南)怎么可以错过

随心笔谈2年前发布 编辑
146 0
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买



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

© 版权声明

相关文章