莊周夢蝶

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

          Ruby Tip——讀文件

          Posted on 2008-10-07 09:38 dennis 閱讀(1334) 評論(3)  編輯  收藏 所屬分類: 動態(tài)語言
           Ruby如何簡潔地讀整個文件,你可以這樣做:
          f=File.open("test.log","r")
          result
          =''
          f.each_line do 
          |line|
             result
          +=line
          end
          puts result
          但是,更簡潔的方法是:
          File.open("test.log","r"){ |f| f.collect.join}

          利用了文件打開的IO對象混入了Enumerable模塊這一特點,通過map或者collect將所有文件行放入一個數(shù)組,再join即可。

          更正,其實更簡介的方法是:
          IO.read("test.log")
          僅限于讀文本文件。

          這個tip的由來是我在讀二進制文件的時候發(fā)現(xiàn)IO.read出來的大小與實際結(jié)果不符合,然后去嘗試上文提到的這個方法,其實仍然是錯誤的。讀二進制文件需要指定mode為b:
          File.open("test.swf","rb")

          僅作更正。

          評論

          # re: Ruby Tip——讀文件  回復(fù)  更多評論   

          2008-10-09 14:30 by ning
          很漂亮,喜歡ruby的簡潔
          希望你看看這個:
          http://chinaonrails.com/topic/view/2226.html
          (組織個Guangzhouonrails靠譜么?)
          為“Ruby恒久遠,一顆永流傳“作鋪墊哦:)

          # re: Ruby Tip——讀文件  回復(fù)  更多評論   

          2008-10-10 00:03 by dennis
          @ning
          我覺的很靠譜,行動?

          # re: Ruby Tip——讀文件  回復(fù)  更多評論   

          2008-10-13 12:24 by supermomo
          File.open("test.log").collect.join

          File.open("test.log").readlines.join
          主站蜘蛛池模板: 高唐县| 商水县| 阿尔山市| 古浪县| 桂平市| 孟津县| 永和县| 汕头市| 彰化县| 明溪县| 新干县| 文山县| 湟源县| 绍兴市| 徐水县| 二连浩特市| 巫山县| 临清市| 阜宁县| 南投县| 饶平县| 布尔津县| 吉木萨尔县| 大姚县| 平舆县| 绍兴市| 旬阳县| 颍上县| 墨玉县| 招远市| 晴隆县| 徐汇区| 辰溪县| 维西| 永嘉县| 新建县| 平果县| 会泽县| 思南县| 措美县| 华坪县|