Ruby文件操作

一、 新建文件
 f=File.new(File.join("C:","Test.txt"),"w+")
 f.puts("I am Jack")
 f.puts("Hello World")

文件模式

"r" :Read-only. Starts at beginning of file (default mode).

"r+" :Read-write. Starts at beginning of file.

"w" :Write-only. Truncates existing file to zero length or creates a new file for writing.

"w+" :Read-write. Truncates existing file to zero length or creates a new file for reading and writing.

"a" :Write-only. Starts at end of file if file exists; otherwise, creates a new file for writing.

"a+" :Read-write. Starts at end of file if file exists; otherwise, creates a new file for reading and writing.

"b" :(DOS/Windows only.) Binary file mode. May appear with any of the key letters listed above

二、读取文件

 file=File.open(File.join("C:","Test.txt"),"r")
 file.each{ |line| print"#{file.lineno}.", line }
 file.close

三、新建、删除、重命名文件

 File.new("books.txt","w")
 File.rename( "books.txt", "chaps.txt")
 File.delete( "chaps.txt" )

四、目录操作

1创建目录
 Dir.mkdir("c:/testdir")
04#删除目录
05Dir.rmdir("c:/testdir")
07#查询目录里的文件
08p Dir.entries(File.join("C:","Ruby")).join(' ')
10#遍历目录
11Dir.entries(File.join("C:","Ruby")).each{
       |e| puts e
 }

1、ARGV and ARGF

ARGV

 ARGV << "cnblogslink.txt"
 #The gets method is a Kernel method that gets lines from ARGV
 print whilegets
 p ARGV.class

ARGF

 while line = ARGF.gets
  print line
 end

2、文件信息查询

 #文件是否存在
 p File::exists?("cnblogslink.txt")# => true
 #是否是文件
 p File.file?("cnblogslink.txt") # => true
 #是否是目录
 p File::directory?("c:/ruby") # => true
 p File::directory?("cnblogslink.txt") # => false
 #文件权限
 p File.readable?("cnblogslink.txt")# => true
 p File.writable?("cnblogslink.txt") # => true
 p File.executable?("cnblogslink.txt") # => false
 #是否是零长度
 p File.zero?("cnblogslink.txt") # => false
 #文件大小 bytes
 p File.size?("cnblogslink.txt") # => 74
 p File.size("cnblogslink.txt") # => 74
 #文件或文件夹
 p File::ftype("cnblogslink.txt") # => "file"
 #文件创建、修改、最后一次存取时间
 p File::ctime("cnblogslink.txt") # => Sat Sep 19 08:05:07 +0800 2009
 p File::mtime("cnblogslink.txt") # => Sat Sep 19 08:06:34 +0800 2009
 p File::atime("cnblogslink.txt") # => Sat Sep 19 08:05:07 +0800 2009

3、查找文件

 puts "查找目录下所有文件及文件夹" 
 Dir["c:/ruby/*"].each{|x| 
       puts x
 
 puts "条件查询" 
 Dir.foreach('c:/ruby') { 
     |x| puts x ifx !="." && x !=".."
 }
 puts "查找某一类型文件"
 Dir["*.rb"].each{|x| 
   puts x
  }
 puts "Open 查询"
 Dir.open('c:/ruby') { |d| d.grep /l/ }.each{|x| puts x}
 puts "---------------------------"      
 puts "正则表达式查询"
 Dir["c:/ruby/ruby/[rs]*"].each{|x| puts x} 
 puts "------------------------"
 Dir["c:/ruby/[^s]*"].each{|x| puts x}
 puts "------------------------"    
 Dir["c:/ruby/{ruby,li}*"].each{|x| puts x} 
 puts "------------------------"    
 Dir["c:/ruby/?b*"].each{|x| puts x}        
 puts "查找目录及子目录的文件"
 require 'find'     
 Find.find('./') { |path| puts path }
 
 

加载文件时需要:

require ‘file’

但是加载这个文件前需要有个上下文环境,如:

$:.unshift(File.expand_path(File.join(File.dirname(__FILE__),’..’,’file’)))

require 如果返回true,说明成功读取了新的功能

加载路径,就是默认ruby启动的时候会在这些路径里去寻找可以加载的类库。ruby加载路径放在一个变量$LOAD_PATH($:)里。

函数解释:

File.dirname(__FILE__) 得到当前文件的路径

File.join(‘x’,’y’,’z’) 相当于x/y/z

File.expand_path('./x/y/z) 组成一个绝对路径

$:.unshift("file")加入到$:变量中

支持通配符各正则表达式:

Dir.glob(Dir.glob(File.join(File.dirname(__FILE__), '../*.rb')).each {|f| require f }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值