`

ruby 输入输出

 
阅读更多
Ruby提供了两种不同的I/O方法。
第一种就是我们一直在用的RUBY的内核模块中的gets,open, print, printf, putc, puts, readline, readlines, 以及test。做为一直以来都在使用的standard input和standard output,我就不多做解释了。只要说一句大家就明白了,上面的函数如果出现在C中,那么实现就和C的语法一样,如果出现在JAVA中,你就直接使用JAVA的写法去调用,完全OK。
第二种方法就要体现出Ruby自己的东西了:I/O对象。接下来,我们就来看一下I/O对象的几类。还是从我们最常用的一个子类开始吧:File。
1、打开文件
可能你马上就想到了,既然File是一个类,那么new方法就应该可以用吧,呵呵,没错,我们可以用File.new(filename,openMode)这种方法来打开一个文件,相对的,我们也可以用File.close来关闭对一个文件的引用,这不需赘述。
可是我却要向大家推荐另外一种用法:File.open,这种方法也同样可以打开一个文件,那么他和new有何不同吗?在通常的应用之中,这两种方法并没有什么不同。但是如果在打开文件的方法之后附加了一个块的话,那他们的表现就不同了。Open方法将不再返回一个文件引用,而是去调用块里的代码,并把新打开的文件作为参数传给块使用。而当块中的代码执行完以后,文件将会自动关闭。Open的另外一个好处是,如果在执行过程中程序发生了异常,那么文件也将会自动关闭。而New就有可能因无法执行close而无法关闭文件。
2、读写文件
说起来没有什么大不了的,其实所谓读写文件不过是标准输入输出函数前面加上一个File.而已,也就是说我们用objFile.puts和objFile.gets来进行文件的读写就可以了。
3、使用迭代器读取文件
       a.IO#each_byte将会得到I/O对象的接下来的8位。
              File.open("testfile") do |file|
file.each_byte {|ch| putc ch; print "." }
end
       b.IO#each_line将得到接下来的一行。
              File.open("testfile") do |file|
file.each_line {|line| puts "Got #{line.dump}" }
end
       c.each_line中还可以使用分隔符。
              File.open("testfile") do |file|
file.each_line("e") {|line| puts "Got #{ line.dump }" }
end
d.如果你把迭代器与自动关闭的块特征相联系的话,那就可以使用IO.foreach。这种方法以I/O源做为参数,并打工它,然后自动对行进行迭代,最后再关闭文件。好像有点糊涂了,还是来看代码吧:
IO.foreach("testfile") {|line| puts line }
         是不是有点惊讶于RUBY的快捷了?
       e.当然了,你还可以把文件读进字符串或者一个字符串数组里。
              # read into string
str = IO.read("testfile")
或者:
# read into an array
arr = IO.readlines("testfile")


Ruby语言最为常用的就是输入输出的应用。我们经常使用print和puts方法来实现这些输入输出功能。

所有这些和其它处理Ruby输入输出的方法都定义于Kernel模块中。这个Kernel模块又被包含在Object类中。因此,Kernel的方法出现在每一个对象中。在输出方面,Kernel定义了print,printf,putc和IO类和两个子类(File和BasicSocket)-它们允许读写文件和套接字。BasicSocket是套接字库的一部分并且将在以后讨论它。

包含了FileTest模块的File类,提供了许多方法来操作系统文件和目录。从Kernel中使用的用于读写到标准输入/输出机制的方法被进一步重用于File实例中的读写操作。下面是一个Ruby输入输出代码示例-它把一些名字写入一个新建的文件中,然后再把这些名字读回到一个数组中。

customers=%w[Jim Kevin Davin Andrew] 
outFile = File.new("c:\\
examples\\test\\customers.txt", "w") 
customers.each{|customer
| outFile.puts(customer)} 
outFile.close 
inFile= File.new("c:
\\examples\\customers.txt", "r") 
readCustomers=inFile.readlines 
readCustomers.each{
|customer| puts customer} 
inFile.close 
分享到:
评论

相关推荐

    Ruby 教程 The Book of Ruby

    - 输入输出流的操作 7. **异常处理** - 异常的基本概念 - 如何定义和捕获异常 - 自定义异常 8. **测试与调试** - 单元测试框架的使用 - 调试技巧与工具 9. **项目实战** - 通过实际项目案例巩固所学知识 ...

    ruby - ruby tutorial

    进入 IRb 后,可以直接输入 Ruby 代码并按 Enter 键运行。 ### 下一步 完成本教程的学习后,读者应该能够熟练掌握 Ruby 的基本概念和常用操作,并能够开始构建简单的 Ruby 应用程序。接下来,可以继续探索更高级的...

    Ruby-irbtools改善Ruby的IRB控制台

    irbtools是一套专门为Ruby的IRB控制台设计的工具集,它包含了许多实用的模块和扩展,如历史记录管理、自动补全、颜色高亮和更强大的输入处理。下面我们将深入探讨irbtools如何改善Ruby的IRB控制台,并介绍其中的一些...

    Ruby编程语言pdf

    本书详细介绍了Ruby 1.8和1.9版本各方面的内容。... 本书还包含对Ruby平台上丰富的API的详尽介绍,并用带有详尽注释的代码演示了Ruby进行文本处理、数字运算、集合、输入/输出、网络开发和并发编程的功能。

    ruby1.8.6-26

    5. 验证:安装完毕后,打开命令提示符并输入`ruby -v`,如果输出Ruby的版本信息,说明安装成功。 Ruby 1.8.6 特点: - 兼容性:对Windows系统有良好的支持,解决了许多与操作系统交互的问题。 - 面向对象:Ruby是一...

    Ruby-QRcode一个用于解析QR码的Ruby库

    在Ruby环境中,你可以通过RubyGems来安装,只需在终端中输入以下命令: ```bash gem install rqrcode ``` 安装完成后,你可以在你的Ruby代码中引入这个库: ```ruby require 'rqrcode' ``` 接下来,我们将讨论...

    在Ruby中处理文件的输入和输出的教程

    Ruby是一种广泛使用的脚本语言,其对文件输入和输出提供了丰富的内置支持,使得处理文件变得相对简单。Ruby的IO类在内核(Kernel)模块中实现,派生自IO类的所有I/O方法提供了基本的文件操作功能,包括但不限于:...

    ruby语法基础教程及Ruby教程中文版和安装文件

    Windows用户可以选择RubyInstaller,Mac用户可以通过Homebrew安装,Linux用户可以在终端输入相应的包管理器命令(如`apt-get`或`yum`)来安装。 在安装完成后,你需要配置Ruby环境,包括安装Ruby开发工具包(如...

    Ruby 文件的输入与输出

    Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现。所有的 I/O 方法派生自 IO 类。 类 IO 提供了所有基础的方法,比如 read、 write、 gets、 puts、 readline、 getc 和 ...

    Sass环境-Ruby2.6.5.zip

    Ruby 安装 - Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤。 ... 如果一切工作正常,将会输出所安装的 Ruby 解释器的版本,如上所示。如果您安装了其他版本,则会显示其他不同的版本。

    ruby脚本交互.rar

    1. **Ruby脚本交互**: Ruby提供了多种方式进行脚本交互,包括命令行参数、标准输入/输出、文件操作和网络通信等。通过命令行参数,我们可以传递参数给Ruby脚本并在脚本内部处理。标准输入/输出则允许脚本与用户或...

    Logstash ruby 插件 demo

    总结来说,Logstash 的 Ruby 插件机制为用户提供了极大的灵活性,允许开发者利用 Ruby 语言的强大功能来扩展 Logstash 的输入、过滤和输出能力。通过阅读和理解 `demo` 文件,我们可以学习如何创建和应用这些自定义...

    ruby入门到精通

    8. **文件和I/O操作**:学习如何读写文件,进行标准输入输出操作,以及如何处理文件流。 9. **正则表达式**:Ruby提供了强大的正则表达式库,用于文本匹配和操作。 10. **线程与并发**:Ruby支持多线程编程,虽然...

    ruby开发的基本流程.doc

    - **验证安装**:安装完成后,可以在命令行中输入`ruby -v`来确认Ruby是否已正确安装及其版本信息。 #### 二、创建Ruby项目 一旦Ruby环境搭建完成,下一步就是创建一个新的Ruby项目。在Ruby社区中,最流行的框架莫...

    ruby programming

    该命令会显示Ruby的版本号,如果成功安装,则输出类似`ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]`的信息。 ### Ruby编辑器 为了更好地编写Ruby代码,推荐使用以下编辑器: - **Visual ...

    Ruby-Async是基于nio4r和定时器的Ruby的可组合的异步IO框架

    Ruby-Async是一个强大的框架,它利用了nio4r库和定时器来实现高效的异步输入/输出(I/O)操作。在Ruby世界中,异步编程可以帮助开发者编写出并发性能更好的应用,尤其在处理大量I/O密集型任务时,如网络通信、文件...

    ruby192安装包

    5. **验证安装**:安装完成后,打开命令行窗口,输入`ruby -v`,如果输出显示Ruby192的版本信息,那么恭喜你,安装成功了。 6. **安装Gem**:Ruby使用Gem来管理第三方库。首次安装后,需要通过`gem update --system...

    ruby中文 文档

    8. **文件和I/O操作**:学习如何读写文件,以及进行标准输入输出和流处理。 9. **线程和并发**:Ruby支持多线程,文档会解释如何创建和管理线程,以及并发编程的注意事项。 10. **Gem包管理**:Ruby的Gem系统是其...

    Ruby-RDoc用于为Ruby项目生成HTML和命令行文档

    例如,输入`ri MyClass`会显示`MyClass`的相关文档,而`ri MyClass#my_method`则会展示`my_method`的方法详情。 在你提供的压缩包`rdoc-master`中,很可能包含了RDoc的源代码,这可以帮助你深入了解其内部工作原理...

Global site tag (gtag.js) - Google Analytics