2011-11-10 67 views
0

我与一些红宝石玩一天,我写了下面的代码红宝石Win32文件只读标志

File.open(my_file, "w+") do | fh | 
    begin 
     fh.readonly = true    <--------Exception thrown here 
    ensure 
     fh.close 
    end 
    end 

,因为它抛出EACCES因为该文件是只读的,这不工作,如果我改变开旗到“r”这工作得很好。对我来说,这是违反直觉的,因为我认为用“r”打开它意味着我只能读取文件,而不能更改属性。

我正在使用win32文件(0.6.6)和红宝石1.8.7(不能升级为当前项目),这是正常的行为是win-32文件gem的怪癖还是只是一个错误,我能够代码周围。

为只读位设置为true,我必须以w打开+,这似乎更明智

2003 64位,以防万一多一点信息是已在Windows Server上进行这个测试,使差异

+0

尝试使用“w +”打开文件或将readonly设置为true时会引发EACCES? – hellectronic

+0

将readonly设置为true时,对不起,我应该更清楚 –

回答

0

我终于发现了什么,这是,还有另一个进程锁定目录与文件系统的独占锁,它没有与processexplorer出现,但我注意到在我的日志记录的东西该目录,我停止了服务,然后运行。

0

尝试打开具有读写权限的文件。

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

nope,非法访问模式rw +(ArgumentError) –