我的代码需要创建一个文件,写入它,然后将文件对象更改为只读模式。
我现在做的,看起来有点丑陋:我用模式“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=
方法。
答案 0 :(得分:0)
不,我不知道有办法做到这一点,我认为这源于Linux中open
系统调用无法做到的。
IO.new
州的RubyDoc:
当只读原始IO模式时,模式不能改为可写。同样,模式不能从只写更改为可读。如果指示了这种错误的改变,则实际发生错误的时间根据平台而不同。
但我注意到,这并不明确说明你能做什么或不能做什么读/写模式......