当我在终端上运行这个Ruby代码时,它不会在控制台上显示“它工作”。这段代码有什么问题?
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
答案 0 :(得分:3)
有几点需要注意。
1)当您使用File
写入文件时,它会缓存数据以提高效率(而不是重复写入文件系统),因此您需要flush
句柄以确保实际上用任何缓冲数据写入它。您可以通过调用flush
或通过关闭句柄隐式地执行此操作。
2)当您从用户输入gets
或从文件系统读取时,strip
任何尾随空白字符通常都是个好主意。没有:text.strip == "Hello World"
3)不是打开同一个文件的两个句柄(通过File
和IO
),而是可以通过从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"