在大多数编程语言中,处理文件的流程是打开-使用-关闭的,这是常识。然而,我在 Ruby 编码中看到了很多不匹配的 File.open 调用,而且我还在 Ruby docs 中发现了 知识的宝石:
当垃圾收集器声明 I/O 流时,它们将自动关闭。
爱尔兰共和军(IRC)对这个问题采取了友好的态度:
[17:12]是的,而且,文件描述符的数量通常受到操作系统的限制
[17:29]我假设您可以很容易地用完垃圾收集器清理的可用文件描述符 之前。在这种情况下,您可能需要自己关闭它们。“被垃圾收集者认领”意味着 GC 将在未来某个时刻发挥作用。而且很贵。显式关闭文件的原因有很多。