• [转]Erlang之IO编程


    Erlang之IO编程

    http://www.blogjava.net/killme2008/archive/2007/09/27/148747.html
    --

    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的文档。
  • 相关阅读:
    【leetcode】Basic Calculator III
    【leetcode】Reorganize String
    【leetcode】Largest Plus Sign
    【leetcode】Reach a Number
    【leetcode】Network Delay Time
    【leetcode】Monotone Increasing Digits
    【leetcode】Submission Details
    【leetcode】Valid Parenthesis String
    【leetcode】Max Area of Island
    New Concept English three(14)
  • 原文地址:https://www.cnblogs.com/freebird92/p/2301921.html
Copyright © 2020-2023  润新知