繁体   English   中英

Ruby终端代码不起作用

[英]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+来打开单个读/写流,而不是打开同一文件的两个句柄(通过FileIO )。 然后,您可以倒带到正确的位置。

这种方法的外观如下:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM