2014-11-04 114 views
0

当我开始打印线从一个文件,我得到这个错误印刷线红宝石

#<File:0x007ff65ee297b0> 

这里是代码

require 'rubygems' 
File.open("sample.txt", 'r') do |f| 
puts f 
end 
+3

这不是错误。它正在打印文件对象 – tihom 2014-11-04 07:36:12

+1

你的问题是什么? – sawa 2014-11-04 08:04:04

回答

1

另一种方式:

IO.foreach("sample.txt") {|line| line } 

或者

File.foreach('sample.txt') {|line| line } 
1

File::open返回文件句柄(这显然正在打印为#<File:0x007ff65ee297b0>。)如果您需要逐行输入文件内容,您可能需要使用IO::readlines

IO.readlines("sample.txt").each do |line| 
    puts line 
end 
4

您要打印的文件对象。要获得通过线的内容线,您可以使用File.foreach

File.foreach('sample.txt', 'r') do |line| 
    puts line # called for every line 
end 

要处理整个文件一次,你可以使用read方法的文件对象:

File.open('sample.txt', 'r') do |file| 
    puts file.read # called only once 
end 
2

这不是一个错误。它正确打印一行是你的File对象。 在这里你创建一个文件对象,你没有要求它获取线或其他任何事情。

已经有几个很好的答案。但这里有另一种方法,只需对代码进行最小限度的更改:

File.open("sample.txt", 'r').each_line do |f| 
    puts f 
end