我希望将某些.txt文件从一个目录移动到另一个目录,我正在动态创建包含版本号和日期/时间存储为变量:
require 'fileutils'
version = '2.1.6.0'
time = Time.now.strftime("%Y%m%d%H%M%S")
dir = FileUtils.makedirs ("ruby/bar/#{version}/#{time}")
FileUtils.mv 'foo.txt', dir
目录已成功创建,但是为移动文件部分返回了no implicit conversion of Array into String
错误。
我尝试通过添加以下内容来修改代码:
dir = dir.to_s
但返回No such file or directory - (timings.txt, ["ruby/bar/2.1.6.0/20141007183424"])
。
我需要将其转换为字符串吗?或者甚至无法将文件移动到保存为变量的路径?
答案 0 :(得分:3)
您可以将目录名称保存到变量中,然后重复使用它:
require 'fileutils'
version = '2.1.6.0'
time = Time.now.strftime("%Y%m%d%H%M%S")
dirname = "ruby/bar/#{version}/#{time}"
FileUtils.makedirs dirname
FileUtils.mv 'foo.txt', dirname
FileUtils.makedirs
返回包含其创建的文件夹路径的数组。它是一个数组,因为您可以使用多个文件夹来调用它来创建:
FileUtils.makedir ["foo", "bar"]
如果您想重复使用FileUtils.makedirs
结果,则必须执行以下操作:
require 'fileutils'
version = '2.1.6.0'
time = Time.now.strftime("%Y%m%d%H%M%S")
dir = FileUtils.makedirs "ruby/bar/#{version}/#{time}"
FileUtils.mv 'foo.txt', dir.first