erlang中操作文件的模块有:
file模块:包含用于文件的打开,关闭,读取,写入和目录列表等功能的函数
filename模块:提供了一套操作文件名的函数
filelib模块:file模块的扩展,提供了一套辅助函数用于生成文件列表,检查文件类型等操作
io模块:提供了一系列对已打开文件进行操作的函数
文件操作:
1.读取文件
1)从文件中读取所有erlang数据项:
data1.dat
//data1.dat的文本内容
{person, "joe", "armstrong",
[{occupation, programmer},
{favoriteLanguage, erlang}]}.
{cat, {name, "zorro"},
{owner, "joe"}}.
//读取
file:consult("data1.dat").
file:consult会假定file指定的文件中包含一串erlang的数据项,如果可以读取文件中的所有数据项,那么返回{ok,[Term]},否则返回{error,Reason}
2)从文件中一次读取一个erlang数据项:
{ok,S} = file:open("data1.dat",read).
io:read(S,'').
file:close(S).
首先利用file:open打开文件,然后使用io:read函数读取独立的数据项直到我们读到文件末尾,最后使用file:close来关闭文件。
file:open(File,read) -> {ok,IoDevice}|{error,Why}
io:read(IoDevice,Prompt) -> {ok,Term}|{error,Why}|eof 从IoDevice里面读取erlang数据项,如果IoDevice指定的是一个已经打开的文件,那么Prompt参数将被忽略,如果我们使用io:read来从标准输入读取,那么Prompt只用来提供一个提示符。
file:close(IoDevice) -> ok|{error,Why}
对于已经加载到系统中的所有模块,可以使用code:which来定位他们的文件存放位置。
code:which(file) 查找file模块的位置
3)从文件中一次读取一行数据:
io:get_line会不断读取字符串,直到遇到一个行尾符或者文档结束符。
io:get_line(S,'').
4)将整个文件的内容读取到一个二进制数据中:
使用file:read_file(File)来从一个文件里读取它的所有数据并将其放入一个二进制数据中.
file:read_file(File) -> {ok,Bin}|{error,Reason}
这种读取操作的效率很高
5)随机读取一个文件:
如果读取的文件很大,或者它包含的二进制数据使用了第三方定义的格式,那么我们可以raw模式下打开文件,然后使用file:pread函数从任何想要访问的位置读取文件。
{ok,S} = file:open(“data1.dat”,[read,binary,raw]).
file:pread(S,22,46).
file:close(S).
file:pread(IoDevice,Start,Len)会精确的从IoDevice的第Start个字节开始读,读取长度为Len的字节。
2.写入操作:
1)向一个文件中写入一串erlang数据项,标准库中没有实现,自己实现:
write_consult(File,L) ->
{ok,S} = file:open(File,write),
lists:foreach(fun(X) -> io:format(S,”~p~n”,[X]) end,L),
file:close(S).
要实现文件的写入,文件必须以write模式打开.
io:format(IoDevice,Format,Args) -> ok
Format是一个包含格式化代码的字符串,Args是一串需要输出的数据项。
常见的格式化命令:~p(完整的打印参数),~n(换行符),~s(参数是一个字符串),~w(以标准语法写入数据).
2)向文件中写入一行:
和上面写入erlang数据项基本一样,只不过格式代码由~p变为~s
3)一步写入整个文件:
file:write_file(File,Io)把数据写入Io,这里的Io指的是文件File的Io列表(所谓Io列表其实就是一个列表,它的元素是二进制数据,0-255的整数或者IO列表本身。如果输出一个IO列表,它会自动平坦化,也就是说列表之中所有的方括号都会被删除)。
4)随机写入文件:
与在随机访问模式下的读文件类似。以write模式来打开文件,然后用file:pwrite(Position,Bin)来写文件。
{ok,S} = file:open(“…”,[raw,write,binary]).
file:pwrite(S,10,<<”new”>>).
file:close(S).
在文件的第10个字节处写入一串新的字符串。会覆盖掉原先的内容。
3.目录操作:
list_dir(Dir):用于生成Dir目录下的文件列表。
make_dir(Dir):创建一个新目录
del_dir(Dir):删除目录。
4.查看文件的属性:
file:read_file_info(F):查看文件的属性。如果F是合法的文件名或目录名,那么这个函数会返回{ok,Info},其中Info是一个类型为#file_info的记录。
#file_info的定义如下:
-record(file_info,{size,type,assess,atime,mtime,ctime,mode,links,major_device}).
filelib模块导出了一些日常使用的函数,如:file_size(File),is_dir(File),这些函数只是对read_file_info的封装。
5.复制和删除文件:
file:copy(Source,Destination).复制文件
file:delete(File).删除文件。
文件编程常用函数:
change_group:修改一个文件的文件群组
change_owner:修改一个文件的所有者。
change_time:修改一个文件的最近访问时间或者最新更新时间
close:关闭一个文件
consult:从一个文件中读取erlang值
copy:复制文件内容
del_dir:删除一个目录
delete:删除一个文件
eval:在文件中对一个erlang表达式求值
format_error:返回一个错误原因的描述字符串
get_cwd:得到当前工作目录
list_dir:获取一个目录中文件列表
make_dir:创建一个目录
make_link:为一个文件创建一个硬链接(hardlink).
make_symlink:为一个文件或目录创建符号链接(symbolic link)
open:打开一个文件
position:设置一个文件的访问位置
pread:在一个特定的文件访问位置上读取文件
pwrite:在一个特定的文件访问位置上写入文件
read:从文件中读取内容
read_file:读取整个文件
read_file_info:获取一个文件的信息。
read_link:查看一个文件的连接指向.
read_link_info:查看一个文件或链接的信息。
rename:重命名一个文件
script:对一个文件中的erlang表达式求值并返回结果。
set_cwd:设定当前的工作目录
sync:把一个文件的内存状态同步到该文件的物理存储上
truncate:截断一个文件。
write:向一个文件写入数据
write_file:写入整个文件
write_file_info:修改一个文件的信息。
分享到:
相关推荐
C语言多文件编程方法例程1——头文件包含 本文将详细介绍C语言多文件编程方法例程1,通过头文件包含的方式实现多文件编程。下面将逐步解释标题、描述、标签和部分内容中的知识点。 一、程序结构 在C语言多文件...
标题:"文件编程大集合" 在这个"文件编程大集合"的压缩包中,包含了针对VB(Visual Basic)编程语言的实用小例子和教程资料。VB是一种广泛应用于Windows平台的面向对象的编程语言,以其易学易用的特点深受开发者...
C语言多文件编程 C语言多文件编程是指在C语言编程中,将程序分成多个文件,以便更好地组织和管理代码。这种编程方式可以提高代码的可读性、可维护性和可重用性。 在C语言多文件编程中,通常将程序分成两个部分:...
Keil 多文件编程 Keil 是一款流行的微控制器开发平台,支持多种 microcontroller 架构,包括 8051、ARM、Cortex-M 等。Keil 提供了一个强大的集成开发环境(IDE),方便用户快速开发、编译、调试和烧写微控制器应用...
附件中针对这种情况,做了51控制步进电机的4个实验,都是使用了模块化的多C文件编程风格,并加以注释,对于有C语言基础的人理解起来应该不难。程序的编程结构模块化对于以后从事开发之类的都是有帮助的~(至此献给...
MATLAB文件编程.docx
MATLAB文件编程.pdf
国嵌的课件是编程基础、文件编程部分的ppt,很好的东西
01_IO文件编程.md
1122787133748244多文件编程巩固.sdf
华硕笔记本电脑 ROG 枪神7/魔霸新锐 2023 G614 G614JVF1.318.bin bios文件编程器版本bios文件烧录器主板bios文件
初级文件编程
在工作遇到要分析注册表hive文件,实现删除键及键值的恢复查看,这里是我收集和整理的一些资料,相信会对研究注册表hive文件结构相关技术的朋友有帮助.
特灵8300N离线编程
文件I/O编程章节介绍了文件编程的核心概念和系统调用,包括文件描述符、文件I/O操作以及fcntl和select模型等。这一部分是学习Linux应用编程的基础。 进程控制开发章节详细讲述了进程的相关概念,包括进程的定义、...
2.6 m文件编程规范 2.7 m文件评述器 2.8 提高m文件执行效率的技巧 2.8.1 矢量化操作 2.8.2 给数组预定义维 2.8.3 下标或者索引操作 2.8.4 尽量多使用函数文件而少使用非脚本文件 2.8.5 将循环体中的内容转换为c-mex ...
编程爱好者博客地带(附源码+程序说明) 毕业设计、项目源码、管理系统、包含视频教程和源码以及数据库运行文件 编程爱好者博客地带(附源码+程序说明) 毕业设计、项目源码、管理系统、包含视频教程和源码以及...
网站建设项目软件开发招标文件.doc
第3章 Linux下的文件编程 3.1 概述 .3.2 文件描述符 3.3 基本文件I/O操作 3.4 文件高级操作 3.5 小结 习题 第4章 标准I/O库 4.1 概述 4.2 流和FILE对象 4.3 打开和关闭流 4.4 读和写流 4.5 流文件...
第3章 Linux下的文件编程 3.1 概述 .3.2 文件描述符 3.3 基本文件I/O操作 3.4 文件高级操作 3.5 小结 习题 第4章 标准I/O库 4.1 概述 4.2 流和FILE对象 4.3 打开和关闭流 4.4 读和写流 4.5 流文件...