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

如何在Ruby中将文件资源对象的模式从读写改为只读?,ruby,file-io,file-permissions,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_fil

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

我现在所做的似乎有点难看:我用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=方法。

不,我不知道有什么方法可以做到这一点,我认为这源于Linux中的开放系统调用,它不能做到这一点

对于新的州:

当原始IO的模式为只读时,该模式不能更改为可写。类似地,模式不能从只写更改为可读。如果指示了这种错误的更改,则实际发生错误的时间因平台而异

但我注意到,这并没有明确说明在读/写模式下可以做什么或不能做什么