Ruby如何进行文件操作

Python013

Ruby如何进行文件操作,第1张

file = File.new(“testfile”, “r”)# … process the filefile.closetestfile是想要操作文件名,”r”说明了文件的操作模式为读取。可以使用”w”表示写入,”rw”表示读写。最后要记得关闭打开的文件,确保所有被缓冲的数据被写入文件,所有相关的资源被释放。也可以使用File.open来打开文件,open和new的不同是open可以使用其后的代码块而new方法则返回一个File类的实例。File.open(“testfile”, “r”) do |file|# … process the fileendopen操作的另一个优点是处理了异常,如果处理一个文件发生错误抛出了异常的话,那么open操作会自动关闭这个文件,下面是open操作的大致实现:class Filedef File.open(*args)result = f = File.new(*args)if block_given?beginresult = yield fensuref.closeendendreturn resultendend对于文件的路径,Ruby会在不同的操作系统间作转换。例如,在Windows下,/ruby/sample/test.rb会被转化为\ruby\sample\test.rb。当你使用字符串表示一个Windows下的文件时,请记住使用反斜线先转义:

类方法File.new,它是File对象的一个实例,将它打开文件。第一个参数自然是文件名。

可选的第二个参数被称为模式字符串,它告诉如何打开文件(用于读,写或其它)。模式字符串不做任何事情,它只是个许可。缺省值"r"用于读。这儿是个例子:

file1 = File.new("one")

# Open for reading

file2 = File.new("two", "w")

# Open for writing

new的另一种形式接受三个参数。在这种情况,第二个参数指出文件的原始许可(通常是八进制常量),第三个参数是一组Ored标志。标志是个常量如File:CREAT(当打开时,如果文件不存在则创建它)和File:RDONLY(以只读方式打开文件)。这种形式很少使用。这儿是个例子:

file = File.new("three", 0755, File::CREAT|File::WRONLY)

出于对操作系统或运行时环境的礼貌,总是要关闭你打开的文件。在用于写而打开文件情况下,更应如此才能避免丢失数据。不出意外,close方法用于做到点:

out = File.new("captains.log", "w")

# 必须的步骤...

out.close

这儿是open方法,它简单形式内,它不过是new的同义字,像这样:

trans = File.open("transactions","w")

但是,open可以接受块;这个形式更有趣。当指定块时,打开的文件会被做为参数传递给块。在块的作用域内文件一直保持打开状态,在退出块时自动关闭。这儿是个例子:

File.open("somefile","w") do |file|

file.puts "Line 1"

file.puts "Line 2"

file.puts "Third and final line"

end

# The file is now closed

当我们结束对文件的操作时,很明显这是关闭文件的优雅方式。此外,管理文件的代码在视觉上是个单元。

#!/usr/bin/env ruby -w

fh = File.open("test.txt", "w")

while (gets.chomp)

break if ~/^quit/

fh.puts $_

end

fh.close