新手问题 同一文件流只能遍历一次?

teddy · October 25, 2012 · Last by 5long replied at October 25, 2012 · 3137 hits
require "csv"

class EventManager

  def initialize
    puts "EventManager Initialized."
    filename = "event_attendees.csv"
    @file = CSV.open(filename)
  end



  def print_names
    @file.each do |line|
      puts line[2]
    end
  end

  def print_names2
    @file.each do |line|
      puts line[1]
    end
  end
end

manager = EventManager.new
manager.print_names
manager.print_names2

大家帮忙看看,只有第一个方法有输出,第二个就没了 puts @file 显示是同一个对象 如果每个方法都先 open file 的话是可以的,但是为什么每次 open 只能读取一次呢

是不是同一次 open 文件的话文件指针不会复位啊

对 C 底层不是很了解,只知道有 rewind 方法手动复位 http://apidock.com/ruby/v1_9_3_125/IO/rewind

和用 File 打开文件一样需要自己复位,调用 #rewind 方法就可以再用 #each 迭代了。

You need to Sign in before reply, if you don't have an account, please Sign up first.