写入后无法打印文件

时间:2015-04-08 20:32:54

标签: ruby io

出于某种原因,我无法通过最后一行打印任何内容。

prev_std = STDOUT

$stdout = File.open(reportname, 'w')

# Several things happen to print to STDOUT here

$stdout = STDOUT

# Tell them that the report was written
puts "Report written to #{ reportname }"

# Slurp in the report ( FIXME )
reporttext = File.open(reportname, 'r') { |f| f.read }

# Print out the report after ( FIXME )
puts reporttext

我刚刚将报告写入文件,但不知怎的,我无法将其读回屏幕。我在代码中使用完全相同的字符串来引用这两种情况下的文件。检查shell提示符证明文件已正确写入,但我仍然无法将其打印到屏幕上。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

看起来问题来自文件未关闭。更改$stdout不会关闭它用来引用的文件对象。在将其重新分配给旧标准输出之前,将$stdout.close添加到该行。