📜  Ruby文件I / O

📅  最后修改于: 2021-01-08 13:16:21             🧑  作者: Mango

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#煮熟
  • IO#熟!
  • IO#提取
  • 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中创建一个文件,以从文件中读取或写入数据。

步骤1)在文件hello.rb中,编写代码以创建一个新文件,如下所示。

#!/usr/bin/ruby 
File.open('about', 'w') do |f| 
    f.puts "This is JavaTpoint" 
    f.write "You are reading Ruby tutorial.\n" 
    f << "Please visit our website.\n" 
end 

步骤2)在控制台中键入以下两个命令以查看创建的文件。

ruby hello.rb
cat about

如上所示,将创建新文件并在终端中显示内容。

Ruby读取文件

有三种不同的读取文件的方法。

要返回单行,请使用以下语法。

句法:

f.gets
 code...

要在当前位置之后返回整个文件,请使用以下语法。

句法:

f.read
 code...

要将文件作为行数组返回,请使用以下语法。

句法:

f.readlines
 [code...]

读取文件的例子

让我们使用File.open方法在Ruby中创建一个文件,以从文件中读取或写入数据。

步骤1)在文件hello.rb中,编写代码以读取一个已经存在的文件,如下所示。

#!/usr/bin/ruby 
while line = gets 
    puts line 
end 

步骤2)在控制台中键入以下命令以读取文件。

ruby hello.rb 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将print到文件中的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文件使用重命名方法重命名,并使用删除方法删除。

重命名文件,请使用以下语法。

句法:

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文件已删除,因此不再存在。