假设有两种ruby文件操作。
首先,
file = File.open("xxx")
file.close
其次,
file = File.read("xxx")
file.close
众所周知,我们应该在完成使用后关闭文件。但是,在第二个代码块中,Ruby解释器抛出如下所示的错误消息:
in `<main>': undefined method `close' for #<String:0x000000022a3a08> (NoMethodError)
我不需要在第二种情况下使用file.close
?我想知道为什么?
答案 0 :(得分:5)
这是因为File.read
方法返回包含文件内容的字符串,而不是File
对象。是的,如果您使用close
方法,则不需要显式使用File.read
,因为ruby会自动为您执行此操作。
答案 1 :(得分:3)
Marek Lipka回答正确,我只是想让你再次指出文档句子。
我不需要在第二种情况下使用file.close?
您不需要这样做。
仔细阅读文档IO::read
:
打开文件,可选地寻找给定的偏移量,然后返回长度字节(默认为文件的其余部分)。
read
确保文件在返回前关闭。