如何清除 `StringIO` 实例?

How can I clear a `StringIO` instance?

如何清除 StringIO 实例?在我写入和读取字符串 io 后,我想清除它。

require "stringio"
io = StringIO.new
io.write("foo")
io.string #=> "foo"
# ... After doing something ...
io.string #=> Expecting ""

我尝试了 flushrewind,但我仍然得到相同的内容。

seekrewind只影响接下来的read/write操作,不影响内部存储的内容。

您可以使用 StringIO#truncate like File#truncate:

require 'stringio'
io = StringIO.new
io.write("foo")
io.string
# => "foo"
io.truncate(0)   # <---------
io.string
# => ""

选择:

你也可以使用StringIO#reopen (NOTE: File没有reopen的方法):

io.reopen("")
io.string
# => ""

我使用 truncaterewind。需要倒带来为下一次操作准备 io。

io.truncate(0)
io.rewind