您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 编程语言综合 >> 正文

Ruby中操作文件的方法介绍

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   这篇文章主要介绍了Ruby中操作文件的方法介绍,是Ruby学习当中的基础知识,需要的朋友可以参考下

  Ruby提供了一套完整的I/O相关的内核模块中实现方法。所有I/O方法来自IO类。

  类IO提供了所有的基本方法,如 read, write, gets, puts, readline, getc 和 printf.

  本章将涵盖所有可供在Ruby中使用的基本I/O功能。如需使用更多的功能,请参考Ruby的IO类。

  puts 语句:

  在前面的章节中,你指定值的变量和然后使用声明 puts 输出。

  puts 把语句指示程序显示存储在变量值。这将添加一个新行,每行末尾写出(输出)。

  例子:

  ?

1 2 3 4 5 6 #!/usr/bin/ruby   val1 = "This is variable one" val2 = "This is variable two" puts val1 puts val2

  这将产生以下结果:

  ?

1 2 This is variable one This is variable two

  gets 语句:

  gets 语句可以用来从用户从标准屏幕采取输入调用 STDIN.

  例如:

  下面的代码显示了如何使用 gets 语句。此代码将提示用户输入一个值,将被存储在一个变量val,最后将打印在 STDOUT.

  ?

1 2 3 4 5 #!/usr/bin/ruby   puts "Enter a value :" val = gets puts val

  这将产生以下结果:

  ?

1 2 3 Enter a value : This is entered value This is entered value

  putc 语句:

  与 puts 语句不相同,它在屏幕上输出整个字符串,而putc 语句可以用来一次输出一个字符。

  实例:

  下面的代码的输出只是一个字符 H:

  ?

1 2 3 4 #!/usr/bin/ruby   str="Hello Ruby!" putc str

  这将产生以下结果:

  ?

1 H

  print 语句:

  print 语句是类似 puts 语句。唯一的区别是,puts语句后进入到下一行打印的内容,print 语句将光标定位在同一行上。

  实例:

  ?

1 2 3 4 #!/usr/bin/ruby   print "Hello World" print "Good Morning"

  这将产生以下结果:

  ?

1 Hello WorldGood Morning

  打开和关闭文件:

  到现在为止,我们已经可以读取和写入的标准输入和输出。我们将看看如何运用到实际的数据文件。

  File.new 方法:

  可以创建一个的File对象使用File.new方法的读,写或两者兼有,这需要根据模式串。最后,可以使用File.close的方法来关闭该文件。

  语法:

  ?

1 2 3 aFile = File.new("filename", "mode") # ... process the file aFile.close

  File.open 方法:

  可以使用File.open方法的方法来创建一个新的文件对象,并分配到一个文件中,文件对象。然而,File.open方法和File.new方法之间区别。 File.open方法不同的是,可以关联一个块,而不能在File.new方法使用。

  ?

1 2 3 File.open("filename", "mode") do |aFile| # ... process the file end

  这里是一个不同的模式打开文件列表:

2015512120340068.jpg (585×415)

  读取和写入文件:

  同样的方法,我们一直在使用“简单”的I/O所有文件对象。因此,gets 从标准输入读取一行,File.gets文件从文件对象读取一行。

  然而,I/O对象提供额外的访问方法,使我们的生活更轻松。

  sysread 方法:

  可以使用该方法sysread读取一个文件的内容。可以打开该文件时,在任何模式中使用的方法sysread。例如:

  以下是输入文本文件:

  ?

1 This is a simple text file for testing purpose.

  现在,让我们尝试读取这个文件:

  ?

1 2 3 4 5 6 7 8 9 #!/usr/bin/ruby   aFile = File.new("input.txt", "r") if aFile content = aFile.sysread(20) puts content else puts "Unable to open file!" end

  这条语句将输出文件的前20个字符。现在,将文件指针放置在第21个字符。

  syswrite 方法:

  可以使用方法 syswrite 中的内容写入到一个文件中。需要打开该文件在写入模式使用方法 syswrite 时。

  例如:

  ?

1 2 3 4 5 6 7 8 #!/usr/bin/ruby   aFile = File.new("input.txt", "r+") if aFile aFile.syswrite("ABCDEF") else puts "Unable to open file!" end

  这条语句将 “ABCDEF” 写入到文件中。

  each_byte 方法:

  这种方法属于类 File 。总是关联一个块方法each_byte。考虑下面的代码示例::

  ?

1 2 3 4 5 6 7 8 9 #!/usr/bin/ruby   aFile = File.new("input.txt", "r+") if aFile aFile.syswrite("ABCDEF") aFile.each_byte {|ch| putc ch; putc ?. } else puts "Unable to open file!" end

  一个接一个字符传递变量ch,然后在屏幕上显示如下:

  ?

1 2 3 s. .a. .s.i.m.p.l.e. .t.e.x.t. .f.i.l.e. .f.o.r. .t.e.s.t.i.n.g. .p.u.r.p.o.s.e... . .