如何将 Ruby 中的文件资源对象的模式从读写更改为只读?
我的代码需要创建一个文件,写入该文件,然后将文件对象更改为只读模式。
我现在所做的,看起来有点难看:我用模式“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=
方法。
My code needs to create a file, write to it, and then change the file-bject to read-only mode.
What I do now, seems kindof ugly: I open the file with mode "wb", write to it, close it, then re-open it with mode "rb":
open(@cached_file_name, 'wb') { |file| file.write("foo") }
@cached_file = open(@cached_file_name, 'rb')
Is it possible to change the file from "wb" to "rb" without opening and closing it? Like:
@cached_file = open(@cached_file_name, 'wb')
@cached_file.write("foo")
@cached_file.mode= 'r'
I am not aware of such a mode=
method though.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,我不知道有什么方法可以做到这一点,我认为这源于 Linux 中无法做到这一点的
open
系统调用。IO.new
的 RubyDoc状态:但我注意到,这并没有明确说明读/写模式可以做什么或不能做什么......
No, I'm not aware of a way to do that, and I think that stems from the
open
syscall in Linux which can't do that.The RubyDoc for
IO.new
states:But I note that that doesn't explicity state what you can or can't do for read/write modes...