📜  Ruby-文件I O(1)

📅  最后修改于: 2023-12-03 15:19:52.633000             🧑  作者: Mango

Ruby-文件I/O

简介

在 Ruby 中,I/O 操作指在程序中与外部设备进行数据读写的过程,其中文件 I/O 是最常见的一种实现方式,即对文件进行读写操作。Ruby 提供了丰富的文件 I/O API,使得文件读写操作变得简单而高效。

文件操作
打开文件

要在 Ruby 中进行文件 I/O 操作,首先需要打开文件。Ruby 中使用 File.open 方法来打开文件,该方法可以接受文件路径和文件打开模式作为参数,返回表示文件的 File 对象。

file = File.open('example.txt', 'r')

上面的例子中使用 File.open 方法打开名为 example.txt 的文本文件,并用 r 模式表示对文件的读取操作。

在打开文件时,还可以指定如下常见模式:

  • 'r':读模式,打开文件并允许读取文件内容(默认模式);
  • 'w':写模式,打开文件并允许向文件写入内容,会先清空文件内容;
  • 'a':追加模式,打开文件并允许向文件写入内容,不会清空文件内容;
  • 'b':二进制模式,以二进制方式打开文件;
  • '+':读写模式,打开文件并允许同时读取和写入文件。
读取文件内容

从一个已经打开的文件对象中读取内容,需要使用 File.readFile.readlines 方法,它们分别会将文件的全部内容或逐行内容读取到内存中,然后作为字符串或字符串数组返回。

# 读取整个文件内容
content = file.read
puts content

# 逐行读取文件内容
lines = file.readlines
puts lines.join
写入文件内容

向一个打开的文件对象中写入内容,需要使用 File.writeFile.puts 方法。它们分别会将指定的字符串或字符串数组写入到文件中。

# 创建一个新文件,将字符串写入文件
File.write('example.txt', 'Hello, world!')

# 追加字符串到文件结尾
File.write('example.txt', 'Hello, again!', mode: 'a')

# 逐行写入字符串数组到文件,每行结尾添加换行符
lines = ['hello', 'world']
File.open('example.txt', 'w') do |file|
  lines.each do |line|
    file.puts line
  end
end
关闭文件

完成对文件的读写操作后,需要调用 File.close 方法关闭文件。

file.close
文件操作的异常处理

在进行文件操作时,如果发生异常,需要进行异常处理,以避免程序崩溃或数据丢失的情况。常见的文件操作异常有文件不存在、文件打开失败、文件读取或写入失败等,可以使用 Ruby 的异常处理机制来捕获这些异常。

begin
  file = File.open('not-exist.txt', 'r')
  puts file.readlines
rescue Errno::ENOENT
  puts "文件不存在"
rescue Errno::EACCES
  puts "文件不可读取"
ensure
  file.close if file
end

上面的例子中,使用 File.open 方法打开一个不存在的文件,通过 begin..rescue 结构捕获异常并提示错误信息,并通过 ensure 语句块确保无论是否发生异常,都能关闭文件。

总结

本文介绍了 Ruby 中关于文件 I/O 操作的基本知识,包括文件打开、读取、写入和关闭,以及进行文件操作时遇到的异常处理。掌握这些知识将有助于编写高效且健壮的 Ruby 程序。