Ruby文件处理

Ruby对文件的读写处理其实和其他高级语言是相似的:

  • 创建文件对象,使用文件对象关联文件并打开( File.open() )

  • 读写文件并处理逻辑

  • 处理完成后必须明确关闭文件

读取文件
filename = ARGV[0]
file = File.open(filename)
text = file.read
print text
file.close

直接读取的简化

对于小文件 ( 大文件全量加载非常消耗内存且缓慢 ),完整的 open => read => close 过程可以简化缩写为一个 read 方法:

简化read
filename = ARGV[0]
text = File.read(filename)
print text

最后,还能够 浓缩 为一句话的程序:

一句话简化read
print File.read(ARGV[0])

警告

  • 一下子读取全部文件内容非常耗时

  • 由于读取的文件内容会暂时保存在内存中,所以遇到大文件时,程序可能会因此崩溃

为了避免上述问题,通常采用的方法是逐行处理文件内容

逐行处理文件

  • 模拟 grepsimple_grep.rb :

simple_grep.rb
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]

file = File.open(filename)
file.each_line do |line|
  if pattern =~ line
    print line
  end
end
file.close

参考

  • 「Ruby基础教程」