类方法

1. Dir[pat]

    Dir::glob( pat)

返回一个数组,包含与指定的通配符模式 pat 匹配的文件名:

  • * - 匹配包含 null 字符串的任意字符串
  • ** - 递归地匹配任意字符串
  • ? - 匹配任意单个字符
  • [...] - 匹配封闭字符中的任意一个
  • {a,b...} - 匹配字符串中的任意一个
      
    # 获取当前目录中所有的文件名
    puts Dir.glob('*') # 获取当前目录中所有隐藏文件名
    puts Dir.glob('.*') # 获取当前目录中扩展名为.rb或者.txt的文件
    puts Dir.glob(['*.rb', '*.txt'])
    puts Dir.glob(%w(*.rb *.txt)) # 或者这样 # 获取当前目录及其子目录下的所有文件, 递归查找目录
    puts Dir.glob('**/*') # 获取当前目录下所有后缀为.txt的文件名,递归查找目录
    puts Dir.glob('**/*.txt')

2. Dir::chdir( path)
    改变当前目录。 

puts Dir.pwd #=> D:/Program Files/RubyMine 2017.test.text.5/workspace/dir
Dir.chdir('../') #=> 移动到上层路径
puts Dir.pwd #=> D:/Program Files/RubyMine 2017.test.text.5/workspace
io = File.open('test.rb') #=> 打开D:/Program Files/RubyMine 2017.test.text.5/workspace目录下的test.rb文件
io.close

3. Dir::getwd
    Dir::pwd

    返回当前目录

4.  Dir::mkdir( path[, mode=0777])

  创建指定目录,可指定目录权限。如果创建失败则返回 SystemCallError 错误

5. Dir::rmdir( path)

    Dir::unlink( path)

    Dir::delete( path)

   删除空的文件夹,如果文件夹内有文件,则会有 SystemCallError 崩溃

6. Dir::new( path)
    Dir::open( path)
      Dir::open( path) {| dir| ...}

    返回 path 的新目录对象。如果 open 给出一个块,则新目录对象会传到该块,块会在终止前关闭目录对象

# 目录内容的读取
#test.text.while
dir = Dir.open('./')
while name = dir.read
p name
end
dir.close # 2.each
dir = Dir.open('./')
dir.each do |name|
p name
end
dir.close # 3.open(常用,使用该方法后可以省略close方法的调用)
Dir.open('./') do |dir|
dir.each do |name|
p name
end
end

7. Dir::foreach( path) {| f| ...}

    为 path 指定的目录中的每个文件执行一次块

实例方法

ruby Dir类的更多相关文章

  1. 雷林鹏分享:Ruby Dir 类和方法

    Ruby Dir 类和方法 Dir 是一个表示用于给出操作系统中目录中的文件名的目录流.Dir 类也拥有与目录相关的操作,比如通配符文件名匹配.改变工作目录等. 类方法 序号方法 & 描述 1 ...

  2. 雷林鹏分享:Ruby File 类和方法

    Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) ...

  3. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 类

    Ruby和其他面向对象的语言一样,使用类来组织方法,然后实例化类,创建对象.1.构造方法使用双引号是字符串的字面构造方法,也可以使用“具名构造方法”,即在类名上调用new方法 >> s=& ...

  4. objective-c中类似ruby枚举类的实例方法

    虽然obj-c的语法格式略显繁琐,但它和ruby都从某些方面继承了smalltalk的某些动态的东西.这些东西是 C和C++之类的静态语言所不曾有的. 比如ruby中可以将一个类或对象的所有方法枚举出 ...

  5. RUBY的类封装,继承,多态简单演示

    class Person def initialize(name,age=18) @name=name @age=age @motherland="China" end def t ...

  6. ruby File类

    类方法 路径相关: File.basename(filename <, suffix>) -> string返回给定文件名 filename 的最后一部分.如果有 suffix 参数 ...

  7. ruby Time类与Date类

    Time类用于表示时间.时间除了表示年月日时分秒的信息外,还包含了表示地域时差的时区(time zone)信息.例如我们可以计算中国当前时间是国际协调时间的几点 Date类只用于表示年月日.因此,相对 ...

  8. ruby URI类

    一. URI require 'uri' uri = URI("http://foo.com/posts?id=30&limit=5#time=1305298413") # ...

  9. Ruby Proc类

    Proc类  生成  Proc.new() {...}  proc {...}    注,代码块参数带用  |..., *array| 获得后续参数的数组  lamda {...}  call呼出时会 ...

随机推荐

  1. 买卖股票的最佳时机 - C++

    class Solution { public: /** * @param prices: Given an integer array * @return: Maximum profit */ in ...

  2. 域名和DNS服务器

    概念性的东西: 域名:     ①.百度:域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理 ...

  3. C#操作CAD-调用winform

    个人认为用命令操作cad会比较便捷,但是鉴于好多人喜欢通过鼠标点击的方式操作cad,在此讲一下如何调用winform.前期准备请看上篇文章. 1.在新建好项目并引用接口dll的前提下,新建一个winf ...

  4. vue项目运行报错:Module bulid failed: Error: Node Sass does not yet support your current environment

    出错起因:      从GitLab clone项目 --> 用 npm install 命令下载依赖包 --> #npm run dev,报错 错误截图: 解决方法:   思路:单独 i ...

  5. ubuntu安装google test

    google test 简称gtest,是一个C/C++的单元测试框架,它的代码在github仓库,使用起来还是挺方便的. 安装 先确保PC上有安装cmake: sudo cmake --versio ...

  6. leetcode 62、Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  7. python:生产者与消费者模型

    1,生产者与消费者模型的矛盾在于数据供需的不平衡 import time import random from multiprocessing import Queue from multiproce ...

  8. 【CF1009F】Dominant Indices(长链剖分优化DP)

    点此看题面 大致题意: 设\(d(x,y)\)表示\(x\)子树内到\(x\)距离为\(y\)的点的个数,对于每个\(x\),求满足\(d(x,y)\)最大的最小的\(y\). 暴力\(DP\) 首先 ...

  9. ACM-ICPC(10/21)

    写一发后缀数组套路题,看起来简单,写起来要人命哦~~~ 总共13题. 分两天debug吧,有点累了~~~ suffix(后缀数组的应用) sa[i] :排名第 i 的后缀在哪(i 从 1 开始) ra ...

  10. UOJ 48 次最大公约数

    次最大公约数 = gcd / 其中一个数质因数中最小的. gcd(42,12) = 6;    div(42) = 2*3*7   div(12) = 2^2*3 sgcd(42,12) = 6 / ...