如何在Ruby中的文件资源对象中将模式从读写更改为只读?

时间:2011-06-24 10:00:55

标签: ruby file-io file-permissions

我的代码需要创建一个文件,写入它,然后将文件对象更改为只读模式。

我现在做的,看起来有点丑陋:我用模式“wb”打开文件,写入,关闭它,然后用模式“rb”重新打开它:

open(@cached_file_name, 'wb') { |file| file.write("foo") }    
@cached_file = open(@cached_file_name, 'rb')

是否可以在不打开和关闭文件的情况下将文件从“wb”更改为“rb”?喜欢:

@cached_file = open(@cached_file_name, 'wb')
@cached_file.write("foo")
@cached_file.mode= 'r'

我不知道这样的mode=方法。

1 个答案:

答案 0 :(得分:0)

不,我不知道有办法做到这一点,我认为这源于Linux中open系统调用无法做到的。

IO.new州的RubyDoc

  

当只读原始IO模式时,模式不能改为可写。同样,模式不能从只写更改为可读。如果指示了这种错误的改变,则实际发生错误的时间根据平台而不同。

但我注意到,这并不明确说明你能做什么或不能做什么读/写模式......