Ruby语言入门(13)- 内部类 -Dir
上一篇 /
下一篇 2013-02-04 13:25:26
/ 个人分类:语言
Dir类为实现目录流操作而设置的类,它可以依次返回目录中的元素。
Dir[pattern]
Dir.glob(pattern)
Dir.glob(pattern) {|file| ...}
Dir.glob(pattern[, flags])
Dir.glob(pattern[, flags]) {|file| ...}
以字符串数组的形式返回通配符匹配结果。若指定了块的话,将以匹配成功的文件为参数,依次计算该块,然后返回nil。可以一次指定多个pattern,此时需要使用空白(space,tab,换行)或"\0"将它们分割开来。
可用的通配符(pattern)如下。
- *匹配任何字符串,包括空字符串。
- ?匹配任何一个字符。
- [ ]只要匹配方括号中任何一个字符即可。若使用-则表示字符范围。若方括号中的首字符是^时,表示匹配^后的字符以外的任意字符。
- { }表示依次与括号内的字符进行组合。例如,foo{a,b,c}将变为fooa, foob, fooc,然后再依次进行匹配。括号可以嵌套。例如,{foo,bar{foo,bar}}表示将依次与foo, barfoo, barbar进行匹配。
- **/表示通配符*/重复出现0次以上,这将对目录进行再归式地搜索。例如,foo/**/bar表示将依次对foo/bar, foo/*/bar, foo/*/*/bar ... (此后无限延伸)进行匹配。
- 可使用反斜线对通配符进行转义处理。
- 可以为第2可选参数指定一个类似于File.fnmatch中所使用的标识。
Dir.getwd
Dir.pwd
返回当前目录的完整路径。
Dir.chdir([path])
Dir.chdir([path]) {|path| ... }
将当前目录改为path。若省略path时,则会调用环境变量HOME或LOGDIR。若它们中包含设定值时,就将当前目录改为它们的值。若当前目录变更成功就返回0,若失败则引发Errno::EXXX异常。若指定了块的话,则只会在块的执行过程中变更当前目录。
Dir.pwd
=>"c:/"
Dir.chdir("c:\\Sites")
=>0
Dir.pwd
=>"c:/Sites"
Dir.chroot(path)
将根目录改为path。只有超级用户才能改变根目录。您将无法还原到原来的根目录。根目录变更成功时返回0,失败时将引发Errno::EXXX异常。
Dir.mkdir(path[, mode])
生成新目录path.若成功生成新目录就返回0,若失败则引发Errno::EXXX异常。
Dir.mkdir("c:\\test")
=>0
Dir.delete(path)
Dir.rmdir(path)
Dir.unlink(path)
删除目录。目录必须为空。若删除成功则返回0,若失败则引发Errno::EXXX异常。
Dir.delete("c:\\test")
=>0
Dir.entries(path)
以数组形式返回path目录中所含的文件项名
Dir.entries("c:\\Sites")
=>[".", "..", "chromedriver.log", "todo"]
Dir.foreach(path) {|file| ...}
针对path目录中的元素的迭代器。
Dir.new(path)
Dir.open(path)
Dir.open(path) {|dir| ...}
打开并返回一个针对path的目录流。若打开失败则引发Errno::EXXX异常。open()方法可以带块。若带块调用时,将执行该块。当块的运行结束时,目录将被自动关闭。
a=Dir.open("c:\\Sites")
=> #<Dir:c:\Sites>
close
关闭目录流。此后若再对目录进行操作则会引发IOError异常。若成功关闭则返回nil。若失败则引发IOError异常。
a.close
=>nil
a.tell
IOError: closed directory
each {|item| ... }
为目录中的各个元素计算块的内容。返回self。
a.each {|item| puts item}
.
..
chromedriver.log
todo
=> #<Dir:c:\Sites>
a.path
=>"c:\\Sites"
a.pos
=>4
pos=(pos)
seek(pos)
将目录流的读入位置移动到pos。pos必须是使用Dir#tell所得到值。pos=返回右边,而seek则返回self。
a.seek(2)
=> #<Dir:c:\Sites>
a.tell
=> 2
read
从目录流中读出并返回下一个元素。若读到最后一个元素则返回nil。若读取目录失败则引发Errno::EXXX异常。
a.read
=>"chromedriver.log"
rewind
将目录流的读取位置移到开头。返回self。
a.rewind
=> #<Dir:c:\Sites>
a.tell
=>0
收藏
举报
TAG: