Ruby 重新打开文件对象上的流

Ruby 重新打开文件对象上的流,ruby,io,Ruby,Io,假设您关闭一个ruby文件对象 f = File.open('testfile') f.close f.each_byte { ... } #=> IOError: closed stream 我知道您可以通过f=File.open(f)重新打开流,但是有没有办法通过对象上的IO方法重新打开流 e、 g 文件超类IO提供。这适用于文件等持久性资源,但不适用于管道、TTY和套接字等真正的流。IO\close文档说明: 接近→ 零 关闭ios并刷新对操作系统的所有挂起写入。流不可用于任何进一

假设您关闭一个ruby
文件
对象

f = File.open('testfile')
f.close
f.each_byte { ... } #=> IOError: closed stream
我知道您可以通过
f=File.open(f)
重新打开流,但是有没有办法通过对象上的
IO
方法重新打开流

e、 g


文件
超类
IO
提供。这适用于文件等持久性资源,但不适用于管道、TTY和套接字等真正的流。

IO\close
文档说明:

接近→ 零

关闭ios并刷新对操作系统的所有挂起写入。流不可用于任何进一步的数据操作;如果进行此尝试,将引发IOError

这意味着您无法再次重新打开相同的流,因为此时它可能已经关闭了底层文件描述符


重新打开
提供给您的是,您可以使这个对象指向另一个流/文件。如果IO对象绑定到常量,则可能会很有用,但是你需要关闭该文件并重新打开另一个。

我看到了
f.reboon
,但它看起来不像我要找的。我在关闭后尝试使用它,它给了我一个
IOError:closed stream
@mcmullins当你想再次读取流时,你使用
\revend
而不是
\close
。如果你关闭它,你就完成了。谢谢你,这很好地解释了一切。我将看看是否可以在项目中使用
重新打开
f.close
f.open_again
f.each_byte { ... }