📅  最后修改于: 2023-12-03 15:19:52.633000             🧑  作者: Mango
在 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.read
或 File.readlines
方法,它们分别会将文件的全部内容或逐行内容读取到内存中,然后作为字符串或字符串数组返回。
# 读取整个文件内容
content = file.read
puts content
# 逐行读取文件内容
lines = file.readlines
puts lines.join
向一个打开的文件对象中写入内容,需要使用 File.write
或 File.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 程序。