我正在尝试将文件读入字符串。例如,我尝试阅读此文件:
123456
23456
3456
456
56
6
我试过了:
contents = File.open("test.txt", "rb").read
print contents
IO.foreach('test.txt') do |line|
print line
end
File.open('test.txt', 'r').each_line do |line|
print line
end
但我似乎得到了一行将用每个新行覆盖它的内容。我得到666666
。
答案 0 :(得分:1)
问题必须是文件正在使用CR线路终结器(或者您的终端搞砸了并且没有响应LF)。默认情况下,print
不会进入新行(如果这是你想要的话,你应该使用puts
),each_line
不会删除行终止符。所以会发生什么,print "123456\r
“打印出123456
,然后将光标返回到行的开头,而不移动到下一行(因此光标在1
上。然后当你print "23456\r"
,它将覆盖前五个字符并再次回到开头,当前状态为234566
...最后,566666
将被{{1}覆盖最终的"6\r"
。
答案 1 :(得分:1)
为什么不尝试简单的解决方案
# ruby sample code.
# process every line in a text file with ruby (version 1).
file='test.txt'
File.readlines(file).each do |line|
puts line
end
第二种方法
# ruby sample code.
# process every line in a text file with ruby (version 2).
file='test.txt'
f = File.open(file, "r")
f.each_line { |line|
puts line
}
f.close