我应该在Ruby中File.read和File.open之后销毁File对象吗?

我应该在Ruby中File.read和File.open之后销毁File对象吗?,ruby,file,Ruby,File,假设有两种ruby文件操作 首先, file = File.open("xxx") file.close 第二, file = File.read("xxx") file.close 众所周知,我们应该在使用完文件后关闭它。但是,在第二段代码中,Ruby解释器抛出一条错误消息,如下所示: in `<main>': undefined method `close' for #<String:0x000000022a3a08> (NoMethodError) “.”中的

假设有两种ruby文件操作

首先,

file = File.open("xxx")
file.close
第二,

file = File.read("xxx")
file.close
众所周知,我们应该在使用完文件后关闭它。但是,在第二段代码中,Ruby解释器抛出一条错误消息,如下所示:

in `<main>': undefined method `close' for #<String:0x000000022a3a08> (NoMethodError)
“.”中的
:未定义的#(NoMethodError)方法“close”

我不需要使用
文件。在第二种情况下是否关闭
?我想知道为什么?

这是因为
File.read
方法返回包含文件内容的字符串,而不是
File
对象。是的,如果使用
File.read
方法,则不需要显式地使用
close
,因为ruby会自动为您执行此操作

回答正确,我只是想让你再次指出文档中的句子

在第二种情况下,我不需要使用file.close

你不需要这样做

仔细阅读文件:

打开文件,可以选择查找给定的偏移量,然后返回长度字节(默认为文件的其余部分)
read
确保文件在返回之前关闭。