Ruby创建文件夹,文件,以及将结果输入到改文件中

Ruby创建文件夹,文件,以及将结果输入到改文件中,第1张

类方法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

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

#encoding:gbk

df='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下的文件时,请记住使用反斜线先转义:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12008131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存