Ruby无法创建目录

vol*_*tas 1 ruby

我正在尝试逐行读取具有字符串值的文件,并为每个字符串值创建相应的文件夹/目录.

#require 'fileutils'

value=File.open('D:\\exercise\\list.txt').read
value.gsub!(/\r\n?/, "\n")
value.each_line do |line|
    line.chomp
    print "FOlder names:#{line}"
    Dir.mkdir("D:\\exercise\\#{line}")
end
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

read_folders_svn.rb:8:in `mkdir': Invalid argument - Australia (Errno::EINVAL)
        from read_folders_svn.rb:8:in `block in <main>'
Run Code Online (Sandbox Code Playgroud)

list.txt文件的内容如下

Australia
USA
EUrope
Africa
ANtartica
Run Code Online (Sandbox Code Playgroud)

我尝试打印值及其工作正常,同时创建面临上述问题的相应目录,甚至尝试使用fileutils(fileutils.mkdir)选项,但仍然是同样的问题.

请给我任何建议.谢谢

axi*_*iac 5

错误在于:

line.chomp
Run Code Online (Sandbox Code Playgroud)

它从尾部剥离换行符line并返回一个被忽略的值.它不会改变它的价值line.它仍然"\n"以此结束,这是Windows上文件名中不允许的字符.代码在Linux上运行良好,并创建名称结尾的目录"\n".

解决方案也很简单.#chomp!改为使用:

#require 'fileutils'

value=File.open('D:\\exercise\\list.txt').read
value.gsub!(/\r\n?/, "\n")
value.each_line do |line|
    line.chomp!
    print "FOlder names:#{line}"
    Dir.mkdir("D:\\exercise\\#{line}")
end
Run Code Online (Sandbox Code Playgroud)

(但是,由于输入中的空行,它可能仍然会产生错误).