所以我试图通过命令行给出名称来读取ruby中的文件。到目前为止,我的代码如下:
puts "What is the name of the file to read?"
fileName = gets.chomp
file = $stdin.read.strip
f = File.open(file, “r”)
f.each_line { |line|
puts line
}
我看到的是它是通过命令行读取输入但不读取文件。例如,我可以传递" input.txt',' code.txt'和' sonic.txt'作为文件名,但程序只是循环回寻求另一个输入。如何更改此选项以按名称读取文件,然后输出该文件的内容?
答案 0 :(得分:2)
你的问题是:
fileName = gets.chomp
没用。删除它。file = $stdin.read.strip
不会让您终止输入。使用gets
从命令行获取用户的输入。“
参数“r”
中使用了错误的引用File.open
。File.open
的块形式来确保文件在使用后关闭。以下是最低限度修正:
puts "What is the name of the file to read?"
file = gets.chomp
File.open(file, "r"){|f|
f.each_line {|line|
puts line
}
}