ruby win32文件只读标志

时间:2011-11-10 12:41:55

标签: ruby

前几天我正在玩一些红宝石,我写了下面的代码

 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位上执行的,以防万一发生差异。

2 个答案:

答案 0 :(得分:0)

尝试使用读写权限打开文件。

File.open(my_file, "rw+") do | fh | 
 begin
   fh.readonly = true
 ensure
   fh.close
 end
end

答案 1 :(得分:0)

我最终发现了这是什么,还有另一个进程锁定目录,文件系统上有一个独占锁,它没有显示processsexplorer,但我注意到在我的日志记录该目录的东西,我停止了服务,这是有效的。