Ruby 无法创建目录

标签 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

我收到以下错误:

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

list.txt文件内容如下

Australia
USA
EUrope
Africa
ANtartica

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

请提出任何建议。谢谢

最佳答案

错误在行中:

line.chomp

它从 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

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

关于Ruby 无法创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43886421/

相关文章:

ruby - 为什么有些方法可以与 inject 一起使用而有些则不行?

ruby-on-rails - 由于 Nokogiri,加载 Devise Gem 时出错

css - ruby rails : Retrieve css element and check value

ruby-on-rails - Ruby on Rails link_to 内部 ID

ruby-on-rails - ruby rails : Keep user input after submitting search form

ruby - 正常关闭 amqp(和/或)http 守护进程(以及关于全局变量)

ruby - 使用 Ruby FileUtils 而不是 Bash 命令的好处?

javascript - 通过 ruby​​ 服务器执行 javascript 模板生成 HTML?

arrays - 遍历嵌套哈希以创建数组,同时向其中添加项目

ruby-on-rails - 强参数 - Devise 3.0.0 和 Rails 4。 "Unpermitted parameters: name"