通过命令行输入读取ruby文件输入

时间:2018-05-17 02:52:14

标签: ruby file

所以我试图通过命令行给出名称来读取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'作为文件名,但程序只是循环回寻求另一个输入。如何更改此选项以按名称读取文件,然后输出该文件的内容?

1 个答案:

答案 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
  }
}