Erlang IO编程之文件目录操作常用方法小结_Erlang

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

时间: 2024-10-01 06:42:31

Erlang IO编程之文件目录操作常用方法小结_Erlang的相关文章

Yii2数据库操作常用方法小结

本文实例讲述了Yii2数据库操作常用方法.分享给大家供大家参考,具体如下: 查询: // find the customers whose primary key value is 10 $customers = Customer::findAll(10); $customer = Customer::findOne(10); // the above code is equivalent to: $customers = Customer::find()->where(['id' => 10

jsp+mysql数据库操作常用方法实例总结_JSP编程

本文实例讲述了jsp+mysql数据库操作常用方法.分享给大家供大家参考.具体如下: 1. 查看:     <%@ page contentType="text/html;charset=GB2312" %> <%@ page import="java.sql.*" %> <HTML><style type="text/css"> <!-- body { background-color: #

《Python爬虫开发与项目实战》——1.3 IO编程

1.3 IO编程 IO在计算机中指的是Input/Output,也就是输入输出.凡是用到数据交换的地方,都会涉及IO编程,例如磁盘.网络的数据传输.在IO编程中,Stream(流)是一种重要的概念,分为输入流(Input Stream)和输出流(Output Stream).我们可以把流理解为一个水管,数据相当于水管中的水,但是只能单向流动,所以数据传输过程中需要架设两个水管,一个负责输入,一个负责输出,这样读写就可以实现同步.本节主要讲解磁盘IO操作,网络IO操作放到之后的1.5节进行讨论.1

WCF服务编程设计规范(4):操作与错误设计

WCF服务编程设计规范(4):操作与错误设计.主要包含服务操作与调用.错误设计规范.中英对照.欢迎留言交流.下一节会介绍事务.并发管理和队列服务的内容. Operations and Calls 操作与调用 1. Do not treat one-way calls as asynchronous calls. 不要把单向调用作为异步调用 2. Do not treat one-way calls as concurrent calls. 不要把单向调用作为并发调用 3. Expect exce

redis的jedis编程-redis服务器默认16个database,jedis编程中默认操作的是database0

问题描述 redis服务器默认16个database,jedis编程中默认操作的是database0 jedis中是否提供了接口实现操作不同的database,看接口好像没有参数设置操作databaseX的,csdn的提问真是垃圾,用户体验差 解决方案 http://m.blog.csdn.net/article/details?id=17580381 构造的时候设置

文件和 流-刚接触IO流和文件操作有许多不懂,请大神们来教教这些定义是什么意思

问题描述 刚接触IO流和文件操作有许多不懂,请大神们来教教这些定义是什么意思 File f1 = new File(dir, name);//什么意思,不懂啊. FileOutputStream out = new FileOutputStream(path);//什么意思,不懂啊. FileInputStream in = new FileInputStream(path);//什么意思,不懂啊. FileOutputStream fout = new FileOutputStream(xxx

php文件目录操作类

Java代码   <?php   /*  #文件目录操作类    #例子:  $fileutil = new fileDirUtil();  $fileutil->createDir('a/1/2/3');                 #测试建立文件夹  建一个a/1/2/3文件夹  $fileutil->copyDir('a', 'd/e');           #测试复制文件夹  建立一个d/e文件夹,把a文件夹下的内容复制进去  $fileutil->moveDir('

php日期操作技巧小结_php技巧

本文实例总结了php日期操作技巧.分享给大家供大家参考,具体如下: 1.php将表单里面获取的日期格式转换成统一的格式 2015-9-9 都统一转换成 2015-09-09 这样在数据库都是统一的格式,方便以后查询 $year = "2015"; $month = "9"; $day = "09"; var_dump(checkdate($month,$day, $year));//月和日带有前导0都是符合格式的 if(checkdate($mo

PHP面试题之文件目录操作_php实例

这道题其实并不难,考点主要在函数substr() strrchr()  array_pop()  strrpos() strpos() strrev() explode()  pathinfo(). 废话不多说了,直接给大家贴代码了. 获取文件后缀,遍历目录层次 /** * 5种方式获取文件后缀名 * 这道题其实就是考函数substr() strrchr() array_pop() strrpos() strpos() strrev() explode() pathinfo() * @param