Ruby 文件 I/O
Ruby 文件 I/O
Ruby I/O 是一种与系统交互的方式。数据以字节/字符的形式发送。 IO 类是Ruby 中所有输入和输出的基础。它可能是双工的,因此可能使用多个本机操作系统流。
IO 有一个子类 File 允许在 Ruby 中读取和写入文件。这两个类密切相关。 IO 对象表示与键盘和屏幕的可读/可写交互。
I/O口常见模式
"r":只读模式是从文件开头开始的默认模式。
"r+": 读写模式,从文件开头开始。
"w": 只写模式,要么创建一个新文件,要么截断现有文件以进行写入。
"w+": 读写模式,要么创建一个新文件,要么截断现有文件以进行读写。
"a": 只写模式,如果文件存在,它将附加文件,否则将创建一个新文件用于只写。
"a+": 读写模式,如果文件存在则追加文件,否则会创建一个新文件进行读写。
IO 控制台
IO 控制台提供了与控制台交互的不同方法。 IO 类提供以下基本方法:
IO::console
IO#raw#raw!
IO#cooked
IO#cooked!
IO#getch
IO#echo=
IO#echo?
IO#noecho
IO#winsize
IO#winsize=
IO#iflush
IO#ioflush
IO#oflush
Ruby 打开文件
Ruby 文件可以使用不同的读取、写入或两者兼而有之的方法创建。
在Ruby中有两种打开文件的方法:
File.new 方法: 使用此方法可以创建一个新文件,用于读取、写入或两者兼而有之。
File.open 方法: 使用此方法创建一个新的文件对象。该文件对象被分配给一个文件。
这两种方法的区别在于 File.open 方法可以关联一个块,而 File.new 方法不能。
语法:
f = File.
new(
"fileName.rb")
或者,
File.
open(
"fileName.rb",
"mode")
do
|f|
创建文件的示例
让我们使用 File.open 方法在 Ruby 中创建一个文件,以从文件中读取或写入数据。
Step 1) 在文件 hello.rb 中,编写代码以创建一个新文件,如下所示。
#!/usr/bin/ruby File.
open(
'about',
'w')
do
|f| f.puts
"this is lidihuo" f.write
"You are reading Ruby tutorial.\n" f <<
"Please visit our website.\n" end
Step 2) 在控制台中输入以下两个命令查看创建的文件。
新建文件,内容如上图显示在终端中。
Ruby 读取文件
读取文件有三种不同的方法。
要返回单行,使用以下语法。
语法:
要返回当前位置后的整个文件,使用以下语法。
语法:
要将文件作为行数组返回,使用以下语法。
语法:
读取文件的示例
让我们使用 File.open 方法在 Ruby 中创建一个文件以从文件中读取或写入数据。
Step 1) 在文件 hello.rb 中,编写代码以读取已经存在的文件,如下所示。
#!/usr/bin/ruby
while line = gets puts line end
步骤 2) 在控制台中键入以下命令以读取文件。
控制台显示about文件的内容
sysread 方法
sysread 方法也用于读取文件的内容。借助此方法,您可以在任何模式下打开文件。
示例:
在文件 hello.rb 中,编写代码以读取已经存在的文件,如下所示。
#!/usr/bin/ruby aFile = File.
new(
"about.txt",
"r")
if aFile content = aFile.
sysread(40) puts content
else puts
"Unable to open file!" end
输出:
参数 40 将打印到 40 个字符来自文件。
Ruby 写文件
借助syswrite 方法,您可以将内容写入文件。此方法需要以写入模式打开文件。
新内容将覆盖现有文件中的旧内容。
示例:
#!/usr/bin/ruby aFile = File.
new(
"about.txt",
"r+")
if aFile aFile.
syswrite(
"New content is written in this file.\n") end
输出:
Ruby 重命名和删除文件
Ruby 文件使用 rename 方法重命名并使用 delete mehtod 删除。
To rename 一个文件,使用以下语法。
语法:
File.
rename(
"olderName.txt",
"newName.txt")
示例:
#!/usr/bin/ruby File.
rename(
"about.txt",
"new.txt")
输出:
在上面的输出中,about.txt文件不再存在,因为其名称已更改为 new.txt 文件。
要删除文件,请使用以下语法。
语法:
File.
delete(
"filename.txt")
示例:
#!/usr/bin/ruby File.
delete(
"new.txt")
输出:
在上面的输出中,new.txt文件已被删除,不再存在。