ruby遍历文件内容,基本思路是逐行读取逐行打印,也是比较普遍的方法:

#!/usr/bin/envruby#Encoding:utf8file=File.open("/tmp/abc.txt")file.each_linedo|line|printlineendfile.close

直接写成块,好处是无需显性的关闭文件句柄。

File.open('/tmp/abc.txt')do|file|file.each_linedo|line|printlineendend


另外一种写法,一次性读取一次性打印,相对耗费更多内存,小文件场合比上面的方法更快。不推荐操作大文件。

#!/usr/bin/envruby#Encoding:utf8wholefile=File.read("/tmp/abc.txt")printwholefile


小结

1、第一种方法比较像sed,awk之类的流编辑器,第二种方法跟cat一样暴力。

2、File.read不需要显式关闭文件句柄。


扩展

在打开文件前,判断文件是否存在

#!/usr/bin/envruby#Encoding:utf8ifFile.exist?("/tmp/abc.txt")file=File.open("/tmp/abc.txt")file.each_linedo|line|printlineendfile.closeelseputs"error:filenotexist"end

逐行读取,将文件名作为ruby脚本的参数

#!/usr/bin/envruby#Encoding:utf8filename=ARGV[0]ifFile.exist?(filename)file=File.open(filename)file.each_linedo|line|printlineendfile.closeelseputs"error:filenotexist"end