我在一个简单的程序中逐行读取文件,当我将这些行打印到屏幕上时,在 Windows XP 上的 Netbeans 6.5.1 IDE 的输出窗口中看不到最后一行,但是当我运行程序时直接从命令行作为“ruby main.rb”没有问题(即可以看到最后一行)。我使用的是Ruby 1.8.6。这是整个代码:
File.open("songs.txt","r") do |file|
file.each do |line|
print line
end
end
我在一个简单的程序中逐行读取文件,当我将这些行打印到屏幕上时,在 Windows XP 上的 Netbeans 6.5.1 IDE 的输出窗口中看不到最后一行,但是当我运行程序时直接从命令行作为“ruby main.rb”没有问题(即可以看到最后一行)。我使用的是Ruby 1.8.6。这是整个代码:
File.open("songs.txt","r") do |file|
file.each do |line|
print line
end
end
我自己之前从来没有遇到过这个问题,但我猜你的最后一行没有尾随换行符,所以 Netbeans 控制台没有刷新该行。尝试$stdout.flush
在程序末尾添加,看看会发生什么。
顺便说一句,您可以通过使用以下代码重写它来稍微简化此代码foreach
:
File.foreach("songs.txt","r") do |file|
print line
end
如果您使用puts
which 将在行尾还没有换行符终止符时附加一个换行符终止符,这将更好地工作,从而强制缓冲区刷新。