天天看点

Ruby Tip——读文件

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")

文章转自庄周梦蝶  ,原文发布时间 2008-10-07 <b></b>