Files 与 IO

Ruby 提供了专门用于处理 IO – 输入和输出的类。其中最主要的是一个名为 IO 的类,这不足为奇。IO 类允许你打开和关闭 IO “流”(streams,字节序列),并向它们读写数据。

例如,假设你有一个名为 ‘textfile.txt’ 的文件,它包含一些文本行,这就是你打开文件并在屏幕上显示每一行文本的方法:

io_test.rb
  1. IO.foreach("testfile.txt") {|line| print( line ) }

这里 foreach 是 IO 类的类方法,因此你不需要创建新的 IO 对象来使用它;相反,你只需将文件名指定为参数。foreach 方法接收一个块,从文件中读取的每一行都作为参数传递给它。你不必打开文件进行读操作,并在完成后关闭它(正如你根据其它语言的使用经验所预料的那样),因为 Ruby 的 IO.foreach 方法会为你完成这些操作。

IO 有许多其它有用的方法。例如,你可以使用 readlines 方法将文件内容读入数组以进行进一步处理。这是一个简单的示例,它再次将文本行打印到屏幕:

  1. lines = IO.readlines("testfile.txt")
  2. lines.each{|line| print( line )}

File 类是 IO 类的子类,上面的示例可以使用 File 类重写:

file_test.rb
  1. File.foreach("testfile.txt") {|line| print( line ) }
  2. lines = File.readlines("testfile.txt")
  3. lines.each{|line| print( line )}