可选的第二个参数被称为模式字符串,它告诉如何打开文件(用于读,写或其它)。模式字符串不做任何事情,它只是个许可。缺省值"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
当我们结束对文件的 *** 作时,很明显这是关闭文件的优雅方式。此外,管理文件的代码在视觉上是个单元。
#encoding:gbkdf='d:/deletedfile/20121123141928/deletefiles.txt'
file=File.new(df)
while line=file.gets
Dir.mkdir line.to_s
end
file.close
########################################
运行虽无报错,但程序。。。
###############我改进一下##############
#encoding: utf-8
df='d:/deletedfile/20121123141928/deletefiles.txt'
file=File.new(df)
File.open(file,'r').each { |line|
#p line.class
if line.strip != ''
Dir.mkdir line.to_s #如果存在会建立失败!
puts '成功建立了吧应该!'
else
puts '失败!'
end
}
file.close
###############这样可以循环读取行##############
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下的文件时,请记住使用反斜线先转义:欢迎分享,转载请注明来源:内存溢出
评论列表(0条)