庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

Ruby Tip——读文件

Posted on 2008-10-07 09:38 dennis 阅读(1306) 评论(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")

仅作更正。

评论

# re: Ruby Tip——读文件  回复  更多评论   

2008-10-09 14:30 by ning
很漂亮,喜欢ruby的简洁
希望你看看这个:
http://chinaonrails.com/topic/view/2226.html
(组织个Guangzhouonrails靠谱么?)
为“Ruby恒久远,一颗永流传“作铺垫哦:)

# re: Ruby Tip——读文件  回复  更多评论   

2008-10-10 00:03 by dennis
@ning
我觉的很靠谱,行动?

# re: Ruby Tip——读文件  回复  更多评论   

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

File.open("test.log").readlines.join

只有注册用户登录后才能发表评论。


网站导航: