前几天我正在玩一些红宝石,我写了下面的代码
File.open(my_file, "w+") do | fh |
begin
fh.readonly = true <--------Exception thrown here
ensure
fh.close
end
end
这不起作用,因为它抛出EACCES,因为该文件是只读的,如果我将打开标志更改为“r”,这可以正常工作。对我来说,这是违反直觉的,因为我认为用“r”打开它意味着我只能读取文件,而不是更改属性。
我正在使用win32-file(0.6.6)和ruby 1.8.7(当前项目无法升级),这种正常行为是win-32文件gem的怪癖,还是我能编码的bug周围。
为了将readonly位设置为true,我必须用w +打开,这似乎更明智
更多信息是这个测试是在Windows Server 2003 64位上执行的,以防万一发生差异。
答案 0 :(得分:0)
尝试使用读写权限打开文件。
File.open(my_file, "rw+") do | fh |
begin
fh.readonly = true
ensure
fh.close
end
end
答案 1 :(得分:0)
我最终发现了这是什么,还有另一个进程锁定目录,文件系统上有一个独占锁,它没有显示processsexplorer,但我注意到在我的日志记录该目录的东西,我停止了服务,这是有效的。