调用FileUtils.touch时,在Windows 7中utime权限被拒绝(f)

时间:2013-12-24 23:49:31

标签: ruby windows fileutils

我正在使用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)

1 个答案:

答案 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)