Erlang IO编程之文件目录操作常用做法小结实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“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的文档。
-
09.01
通过使用 MCP 创建日程和待办怎么做-执行顺序和关键限制
-
09.01
SpringBoot使用WebSocket(二)
-
09.01
IONIQ艾尼氪V成都车展亮相:楔形车身吸睛,科技续航双在线
-
09.01
在Excel中轻松抓取其他表格数据的做法与技巧分享
-
09.01
袋里IP架构设计:采集Shopify / BigCommerce 公开数据时的袋里策略差异
-
09.01
[057][调度模块]分布式环境下定时任务的防重复执行方案
-
-
-
- 字节Seed架构迎来重大调整
- 09.01
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏