Ruby终端代码不起作用

时间:2016-07-01 12:23:20

标签: ruby

当我在终端上运行这个Ruby代码时,它不会在控制台上显示“它工作”。这段代码有什么问题?

f = File.open("hello.txt", 'w')
f.puts "Hello World"

text = IO.read("hello.txt")

if text == "Hello World"
  puts "it works"
end

3 个答案:

答案 0 :(得分:3)

有几点需要注意。

1)当您使用File写入文件时,它会缓存数据以提高效率(而不是重复写入文件系统),因此您需要flush句柄以确保实际上用任何缓冲数据写入它。您可以通过调用flush或通过关闭句柄隐式地执行此操作。

2)当您从用户输入gets或从文件系统读取时,strip任何尾随空白字符通常都是个好主意。没有:text.strip == "Hello World"

,您的平等评估将失败

3)不是打开同一个文件的两个句柄(通过FileIO),而是可以通过从w切换到{{1来打开单个读/写流}}。然后你可以回到正确的位置。

以下是该方法的外观:

w+

答案 1 :(得分:1)

您必须关闭流以将数据保存在其中。

f = File.open("hello.txt", "w"){|file| file << "Hello World"}

text = IO.read(f.path)

if text == "Hello World"
  puts "it works"
end

我希望这会有所帮助

答案 2 :(得分:1)

你缺少f.close:

f = File.open("hello.txt", 'w') 
f.puts "Hello World"
f.close
text = IO.read("hello.txt")
puts "it works"  if text == "Hello World"