我试图在使用完一些 XML 文件后删除它们,其中一个文件给了我这个错误:
'delete': Permission denied - monthly-builds.xml (Errno::EACCES)
Ruby 声称该文件受到写保护,但我在尝试删除它之前设置了权限。
这就是我正在尝试做的:
#collect the xml files from the current directory
filenames = Dir.glob("*.xml")
#do stuff to the XML files
finalXML = process_xml_files( filenames )
#clean up directory
filenames.each do |filename|
File.chmod(777, filename) # Full permissions
File.delete(filename)
end
有任何想法吗?
This:
File.chmod(777, filename)
不做你认为它做的事。来自精美手册 http://ruby-doc.org/core/classes/File.html#M000010:
Changes 权限位指定文件上的位模式表示为mode_int
.
强调我的。文件模式通常以八进制指定,因为它可以很好地将位分为三个 Unix 权限组(所有者、组、其他):
File.chmod(0777, filename)
因此,您实际上并未将文件设置为完全访问权限,而是将权限位设置为 01411,结果如下:
-r----x--t
而不是
-rwxrwxrwx
你所期待的。请注意,您的(十进制)777 权限位图已删除写入权限。
另外,删除文件需要对该文件所在的目录进行写访问(至少在 Unixish 系统上),因此请检查该目录的权限。
最后,您可能想检查返回值File.chmod http://ruby-doc.org/core/classes/File.html#M000010:
[...] 返回已处理的文件数。
仅仅因为您调用并不意味着它会成功。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)