Posted on 2008-10-07 09:38
dennis 閱讀(1326)
評論(3) 編輯 收藏 所屬分類:
動態語言
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將所有文件行放入一個數組,再join即可。
更正,其實更簡介的方法是:
IO.read("test.log")
僅限于讀文本文件。
這個tip的由來是我在讀二進制文件的時候發現IO.read出來的大小與實際結果不符合,然后去嘗試上文提到的這個方法,其實仍然是錯誤的。讀二進制文件需要指定mode為b:
File.open("test.swf","rb")
僅作更正。