怎么用RUBY实现文件的输入输出?

请给出具体代码作为例子,并注释说明。... 请给出具体代码作为例子,并注释说明。 展开
 我来答
匿名用户
2013-04-12
展开全部
输入输出,我们平时简称做(I/O)的东西。想起做为脚本的javascript和vbscript不能使用标准输入输出我就不爽。也还记得刚开始学习java时,还没有Scanner这一说,就连读进一个整数都要很装B地StringTokenizer一番,实在是很苦的。好在Ruby很人性化,他不但实现了I/O,而且实现得还很不错,让我们一起来看一下吧。

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、使用迭代器读取文件

具体代码就是上面的那些
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
匿名用户
2013-04-12
展开全部
使用迭代器读取文件

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

如果你把迭代器与自动关闭的块特征相联系的话,那就可以使用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")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-12
展开全部
# read into an arrayarr = IO.readlines("testfile")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式