读取和写入文件
用于简单 I/O 的方法也可用于所有 file 对象。所以,gets 从标准输入读取一行,aFile.gets 从文件对象 aFile 读取一行。
但是,I/O 对象提供了访问方法的附加设置,为我们提供了便利。
sysread 方法
您可以使用方法 sysread 来读取文件的内容。当使用方法 sysread 时,您可以使用任意一种模式打开文件。例如:
下面是输入文本文件:
This is a simple text file for testing purpose.
现在让我们尝试读取这个文件:
#!/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 时,您需要以写入模式打开文件。例如:
#!/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 是个可以迭代字符串中每个字符。请看下面的代码实例:
#!/usr/bin/ruby
aFile = File.new("input.txt", "r+")
if aFile
aFile.syswrite("ABCDEF")
aFile.rewind
aFile.each_byte {|ch| putc ch; putc ?. }
else
puts "Unable to open file!"
end
字符一个接着一个被传到变量 ch,然后显示在屏幕上,如下所示:
A.B.C.D.E.F.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...