Ruby 中如何打开和关闭文件?

· 约 2 分钟读完 · 第 98 / 199 章

推荐答案

在 Ruby 中,打开和关闭文件可以通过 File.open 方法来实现。通常使用块(block)的形式来确保文件在使用后自动关闭。以下是推荐的代码示例:

在这个例子中,File.open 方法打开名为 example.txt 的文件,并以只读模式("r")打开。文件对象被传递给块中的 file 变量,块执行完毕后,文件会自动关闭。

如果你不想使用块,也可以手动打开和关闭文件:

在这种情况下,你需要显式调用 file.close 来关闭文件。

本题详细解读

文件打开模式

在 Ruby 中,File.open 方法的第二个参数指定了文件的打开模式。常见的模式包括:

  • "r":只读模式(默认),文件必须存在。
  • "w":只写模式,如果文件存在则清空文件,如果文件不存在则创建新文件。
  • "a":追加模式,如果文件存在则在文件末尾追加内容,如果文件不存在则创建新文件。
  • "r+":读写模式,文件必须存在。
  • "w+":读写模式,如果文件存在则清空文件,如果文件不存在则创建新文件。
  • "a+":读写模式,如果文件存在则在文件末尾追加内容,如果文件不存在则创建新文件。

使用块的优势

使用块的形式打开文件的主要优势是确保文件在使用后自动关闭,即使在块内发生异常也是如此。这样可以避免文件描述符泄漏,确保资源的正确释放。

手动关闭文件的注意事项

如果你选择手动打开和关闭文件,务必确保在文件操作完成后调用 file.close。否则,文件描述符可能会一直保持打开状态,导致资源泄漏。为了确保文件在发生异常时也能正确关闭,可以使用 ensure 语句:

这样可以确保无论是否发生异常,文件都会被正确关闭。