如何清除`StringIO`实例?

时间:2015-02-11 01:21:31

标签: ruby stringio

如何清除StringIO个实例?在我写入字符串io并从中读取之后,我想清除它。

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

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

2 个答案:

答案 0 :(得分:5)

seekrewind仅影响下一次读/写操作,而不影响内部存储的内容。

您可以使用StringIO#truncate之类的File#truncate

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

替代:

您还可以使用StringIO#reopen(注意:File没有reopen方法):

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

答案 1 :(得分:2)

我使用truncate AND rewind。需要快退才能为下一次操作做好准备。

io.truncate(0)
io.rewind