打开带有块的文件后会关闭吗?
File.open('test.txt') do |txt|
...
end
我想知道这段代码是否在这段代码的末尾关闭,或者我是否还应该打电话:
File.close()
答案 0 :(得分:4)
我想知道的是这个文件在这段代码的末尾关闭了,还是我还在打电话:
是的,它已关闭。IO::open说
没有关联的块,IO.open是:: new的同义词。 如果给出了可选的代码块 ,它将作为参数传递给io,当块终止时, IO对象将自动关闭/ EM> 即可。在这个例子中,:: open返回块的值。
f = File.open('doc.txt') do |file|
file
end
f.closed? # => true
或者我还应该打电话:
File.close() ?
是的,如果您的块在终止之前返回file
对象,就像上面的代码一样。或者如果您将块内的file
对象分配给本地变量,如下所示:
f = nil
File.open('doc.txt') do |file|
f = file
# your code
end
f.closed? # => true
答案 1 :(得分:1)
如果您想要阅读整个文件,请另外选择:
my_data = File.read('my_file.txt')