我正在使用Windows 7上的ruby 2.0(不幸的是我必须)并且对此代码有疑问:
FileUtils.touch(file)
更新file.ctime需要此代码(可能也会出现问题) 因此,当处理文件时,我会“触摸”它们,而不是在下一次迭代中处理它们。
我该如何处理错误?
ruby_path/fileutils.rb:1137:in 'utime': Permission denied 'path_to_file' Errno::EACCES
'block in touch'
'each'
'touch'
示例:
file = File.new('file_path')
FileUtils.mkdir_p(path)
FileUtils.cp(file.path, path)
FileUtils.touch(file)
答案 0 :(得分:0)
我测试了ruby 1.9和2.0。 FileUtils.touch
没有问题。
您能提供MWE吗?您是否检查了要检查的文件的权限。
特别是:你确定,你没有触摸目录吗?
如果您不想检查目录,可以按FileUtils.save_touch
扩展FileUtils:
require 'fileutils'
module FileUtils
def self.save_touch(fpath)
FileUtils.touch(fpath) unless File.directory?(fpath)
end
end
FileUtils.save_touch(Dir.pwd)
更新问题后:
FileUtils.touch
有一个参数:文件名或文件路径。
你必须调整你的例子:
file = File.new('file_path')
FileUtils.mkdir_p(path)
FileUtils.cp(file.path, path)
FileUtils.touch(file.path)