莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          Erlang之IO編程

          Posted on 2007-09-27 16:03 dennis 閱讀(7950) 評論(2)  編輯  收藏 所屬分類: 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的文檔。





          評論

          # re: Erlang之IO編程  回復  更多評論   

          2007-09-28 16:26 by 千里冰封
          Erlang是什么?JAVA里面的?

          # re: Erlang之IO編程  回復  更多評論   

          2007-09-28 16:41 by dennis
          @千里冰封
          see http://www.erlang.org/
          主站蜘蛛池模板: 河池市| 宜兰县| 家居| 长治市| 镇原县| 彝良县| 喀喇沁旗| 白沙| 北辰区| 西丰县| 柳江县| 甘谷县| 开远市| 客服| 微博| 平塘县| 聂荣县| 万州区| 柏乡县| 武清区| 嘉峪关市| 平塘县| 潜山县| 霸州市| 财经| 清远市| 大庆市| 田林县| 包头市| 香格里拉县| 华阴市| 新乡县| 陵川县| 龙山县| 青铜峡市| 涟水县| 炎陵县| 额敏县| 历史| 平陆县| 中牟县|