2015-02-11 32 views
4

如何清除StringIO實例?在我寫入並從字符串io讀取之後,我想清除它。如何清除「StringIO」實例?

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

我試圖flushrewind,但我仍然得到同樣的內容。

回答

4

seekrewind僅影響下一次讀/寫操作,而不影響內部存儲的內容。

您可以使用StringIO#truncateFile#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 
# => "" 
+2

似乎[StringIO的#重開](http://ruby-doc.org/stdlib-1.9.3/libdoc/stringio/rdoc/StringIO.html#method-i-reopen)作品,以及:'io.string#=>「foo」; io.reopen( ''); io.string#=>「」'。是? – 2015-02-11 01:44:39

+0

@CarySwoveland,感謝您的評論。我不知道。我相應地更新了答案。 – falsetru 2015-02-11 01:51:45

1

我用truncaterewind。需要倒帶才能爲下一個操作準備io。

io.truncate(0) 
io.rewind