我有这个:
require 'tempfile'
t = Tempfile.new('test-data')
t.open
t.sync = true
t << "apples"
t.puts "bananas"
puts "contents are [#{t.read}] (#{t.size} bytes)"
t.close
打印:
contents are [] (14 bytes)
为什么内容实际上没有显示?我在Ruby 1.9.2上。
答案 0 :(得分:6)
问题是你在文件中的当前IO指针处执行了read
,该指针在写入之后已经结束了。您需要在rewind
之前执行read
。在您的示例中:
require 'tempfile'
t = Tempfile.new('test-data')
t.open
t.sync = true
t << "apples"
t.puts "bananas"
t.rewind
puts "contents are [#{t.read}] (#{t.size} bytes)"
t.close
答案 1 :(得分:2)
您可能在流的末尾,没有剩余字节。写完之后,在阅读之前你应该倒回文件(重新打开或寻找位置0)。
require 'tempfile'
t = Tempfile.new('test-data')
t.open
t.sync = true
t << "apples"
t.puts "bananas"
t.seek 0
puts "contents are [#{t.read}] (#{t.size} bytes)"
t.close