如何使用各种Ruby输入/输出操作

438 阅读4分钟

与文件打交道实际上是任何开发者的要求。在大多数情况下,如果你不把数据保存到数据库,你可能会把它保存到一个文件。

本指南将告诉你如何使用Ruby I/O方法来打开、读取、写入和创建新文件。

让我们从Ruby中的输入和输出的基本知识开始吧

基本的I/O

Ruby中最基本的I/O方法是我们用来在屏幕上打印文本的方法。

投入

puts方法可能是最常见的I/O方法。

要在屏幕上打印东西,只需

my_var = 100
puts my_var

puts命令将打印存储在引用的变量中的值,并在最后添加一个新行。

打印

print方法与puts类似,但它不在后面添加新行。它将光标留在同一行中。

print "Hello world!"

Putc

另一个常见的基本I/O方法是putc方法。它的工作原理与puts和print方法类似,但它一次打印一个字符。

比如说

my_var = "Hello World!"
putc my_var

以上应该打印字符'H'。

获取

另一方面,get方法使用STDIN流从用户那里获取输入。

puts "Enter your age: "
age = gets
puts "You are #{age} years old"

文件输入/输出

尽管了解如何使用标准的输入和输出是有帮助的,但当你需要持久性数据时,它可能会有很大的限制。

在这种情况下,我们可以使用文件输入和输出来读取和写入文件。

File.New()

在处理文件时,第一个有用的方法是new方法。它用指定的文件名和模式创建一个新的文件对象。

一般的语法是。

f = File.new(‘filename’, ‘mode’)

文件名可以是任何名字和扩展名。

Ruby支持各种文件模式。这些模式包括。

  1. r:只读模式
  2. w:只写模式
  3. r+:读-写模式
  4. w+:读-写模式
  5. a:写入模式,如果文件存在,则追加新的数据;如果不存在,则创建文件并添加数据。
  6. a+:与 "a "相同,但使用读写模式。

例如,要创建一个不存在的新文件。

f = File.new("new.txt", "a+")
f.syswrite("I have been recently created")
f.close()

在上面的例子中,我们创建了一个新的文件对象,名称为new.txt,模式为读写。由于该文件并不存在,所以它被自动创建。

在接下来的一行中,我们使用syswrite方法向该文件写入内容,最后,关闭该文件。

$ cat new.txt
I have been recently created

File.Open()

你可以使用open方法来打开一个文件。一旦你打开了一个文件,你就可以对它进行读或写。

比如说

f = File.open("new.txt")
content = f.read
puts content

在上面的例子中,我们使用打开方法来打开当前工作目录中的一个现有文件。

一旦打开,我们就可以读取文件内容。

注意,在打开文件进行读取时,我们没有指定模式,因为在没有指定的情况下,它被设置为读取。

要向文件写入,你需要指定模式为写或读-写,如下例所示。

f = File.open("new.txt", "r+")
f.write("This is another line")

f.close()

在上面的例子中,我们指定模式为 "读写",因为我们正在向文件写入。

File.rename()

除了对文件的读写,Ruby允许你执行其他操作,包括使用rename方法重命名文件。

例子:

f = File.rename("new.txt", "renamed.txt")

上面的方法应该把new.txt文件重命名为renamed.txt。

文件.删除()

要删除一个文件,你可以使用delete方法并指定文件名作为参数。比如说

puts "#{File.delete("renamed.txt")} deleted!"

File.dirname()

dirname方法允许你获得文件的路径而不包括文件名。

比如说

f = File.dirname("/var/log/lastlog")
puts f

这应该显示文件所在目录的完整路径。

# ruby fileio.rb
/var/log

文件.存在吗?

要检查一个文件是否存在,使用 file.exists? 方法。如果该值存在,它将返回一个布尔值true,如果不存在,则返回false。

puts File.exists?("/etc/passwd")
true

目录输入输出

如果你想在Ruby中处理目录,你可以使用Dir类,它包含了此类操作的方法。

它们包括:

  1. pwd():返回当前的工作目录
  2. empty?("/dirpath"):检查一个目录是否是空的
  3. mkdir("/dirpath"):用指定的名称创建一个目录。
  4. delete("/dirpath")\: 删除指定的目录
  5. chdir("/dirpath")\: 导航到指定的目录路径
  6. entries("/dirpath"):列出该目录中的所有文件。

总结

本教程已经向你展示了如何使用各种Ruby输入/输出操作。值得注意的是,除了本教程中讨论的那些操作外,你还可以执行其他操作。考虑一下File和Dir类的文档以了解更多。