Ruby 阅读 file_name with gets

Ruby read file_name with gets

我有一个初学者编码任务,第一步是我的程序“应该提示用户输入包含以下信息的文件的文件名:”已经有预制代码可以使用,一个“music_player.rb”(我必须在其中编写代码)和“albums.text”(这是我要读取的文件)

我知道a_file = File.new("mydata.txt", "r")是从文件中读取。我正在尝试做:

file_name = gets()
a_file = File.new("#{file_name}" , "r") # (line 13)

我不断收到错误消息

music_player_with_menu.rb:13:in `initialize': No such file or directory @ rb_sysopen - albums.txt (Errno::ENOENT) 

当我输入 albums.txt 时。如果我只是删除 gets 并使用 File.new("albums.txt" , "r") 它就可以了。我不确定我做错了什么。

尝试从 mydata.txt\n 读取将引发异常,除非文件名实际上以 \n 结尾,这种情况很少见。这是因为您使用的是#gets,其中包括来自用户按 RETURNENTER 的换行符。

当您从 STDIN 读取时,您将得到一个行尾(例如,\n 在 *nix 上,\r\n 在 Windows 上)。因此,当您调用#gets 时,几乎总是需要对结果调用 String#chomp

file_name = gets
#=> "foo\n"

file_name = gets.chomp
#=> "foo"