当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Pathname类用法及代码示例


本文简要介绍ruby语言中 Pathname类 的用法。

Pathname 代表文件系统上文件或目录的名称,但不代表文件本身。

路径名取决于操作系统:Unix、Windows 等。该库适用于本地操作系统的路径名,但实验性支持非 Unix 路径名。

Pathname 可以是相对的或绝对的。直到您尝试引用该文件时,该文件是否存在才重要。

Pathname 是不可变的。它没有破坏性更新的方法。

此类的目标是以比标准 Ruby 提供的更简洁的方式操作文件路径信息。下面的示例演示了差异。

File FileTest 的所有函数以及 Dir FileUtils 的一些函数都包含在内,这并不奇怪。它本质上是所有这些的门面,甚至更多。

例子

示例 1:使用 Pathname

require 'pathname'
pn = Pathname.new("/usr/bin/ruby")
size = pn.size              # 27662
isdir = pn.directory?       # false
dir  = pn.dirname           # Pathname:/usr/bin
base = pn.basename          # Pathname:ruby
dir, base = pn.split        # [Pathname:/usr/bin, Pathname:ruby]
data = pn.read
pn.open { |f| _ }
pn.each_line { |line| _ }

示例 2:使用标准 Ruby

pn = "/usr/bin/ruby"
size = File.size(pn)        # 27662
isdir = File.directory?(pn) # false
dir  = File.dirname(pn)     # "/usr/bin"
base = File.basename(pn)    # "ruby"
dir, base = File.split(pn)  # ["/usr/bin", "ruby"]
data = File.read(pn)
File.open(pn) { |f| _ }
File.foreach(pn) { |line| _ }

示例 3:特殊函数

p1 = Pathname.new("/usr/lib")   # Pathname:/usr/lib
p2 = p1 + "ruby/1.8"            # Pathname:/usr/lib/ruby/1.8
p3 = p1.parent                  # Pathname:/usr
p4 = p2.relative_path_from(p3)  # Pathname:lib/ruby/1.8
pwd = Pathname.pwd              # Pathname:/home/gavin
pwd.absolute?                   # true
p5 = Pathname.new "."           # Pathname:.
p5 = p5 + "music/../articles"   # Pathname:music/../articles
p5.cleanpath                    # Pathname:articles
p5.realpath                     # Pathname:/home/gavin/articles
p5.children                     # [Pathname:/home/gavin/articles/linux, ...]

函数分解

核心方法

这些方法有效地操纵了 String ,因为这就是路径。除了 mountpoint? children each_child realdirpath realpath 之外,这些都不能访问文件系统。

File 状态谓词方法

这些方法是 FileTest 的外观:

File 属性和操作方法

这些方法是 File 的外观:

目录方法

这些方法是 Dir 的外观:

IO

这些方法是 IO 的门面:

实用程序

这些方法是 Find FileUtils 和其他方法的混合:

Method 文档

如上节所示, Pathname 中的大多数方法都是门面。这些方法的文档通常只是说,例如,“请参阅 FileTest.writable? ”,因为无论如何您都应该熟悉原始方法,并且其文档(例如通过 ri )将包含更多信息。在某些情况下,将进行简要说明。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Pathname类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。