莊周夢蝶

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

          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)按行讀?。?br /> io:get_line(F, '').

          (4)讀取整個文件的內容:
          {ok,Binary}=file:read_file("data1.dat").
          注意返回的是一個binary類型

          (5)隨機讀?。?br /> {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/
          主站蜘蛛池模板: 舟曲县| 利津县| 巴东县| 余庆县| 临清市| 交城县| 临海市| 大英县| 彭泽县| 社旗县| 米脂县| 黑水县| 曲周县| 乳源| 曲麻莱县| 正蓝旗| 永寿县| 蓝田县| 江川县| 罗田县| 望奎县| 富宁县| 新建县| 道真| 唐河县| 金寨县| 同仁县| 枝江市| 吉林市| 涪陵区| 保定市| 河南省| 湾仔区| 惠安县| 桑植县| 博湖县| 克拉玛依市| 武隆县| 麟游县| 嘉峪关市| 石景山区|