[英]Ruby terminal code not working
当我在终端上运行此Ruby代码时,它不会在控制台上显示“它有效”。 此代码有什么问题?
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
需要注意的几件事。
1)当您使用File
写入File
,它会缓冲数据以提高效率(而不是重复写入文件系统),因此您需要flush
句柄以确保实际将任何缓冲数据写入其中。 您可以通过调用flush
显式地执行此操作,也可以通过关闭句柄来隐式地执行此操作。
2)当您从用户输入中gets
或从文件系统中读取时,通常最好strip
任何结尾的空白字符。 如果没有以下text.strip == "Hello World"
您的平等评估将失败: text.strip == "Hello World"
3)您可以通过从w
切换到w+
来打开单个读/写流,而不是打开同一文件的两个句柄(通过File
和IO
)。 然后,您可以倒带到正确的位置。
这种方法的外观如下:
f = File.new("hello.txt", 'w+')
f.puts "Hello World"
f.rewind
text = f.read.strip
puts "It works" if text == "Hello World"
您必须关闭流以将数据保存在其中。
f = File.open("hello.txt", "w"){|file| file << "Hello World"}
text = IO.read(f.path)
if text == "Hello World"
puts "it works"
end
我希望这有帮助
您缺少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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.