要約
パス名をオブジェクト指向らしく扱うクラスです。
Pathname オブジェクトはパス名を表しており、ファイルやディレクトリそのものを表してはいません。当然、存在しないファイルのパス名も扱えます。
絶対パスも相対パスも扱えます。
Pathname オブジェクトは immutable であり、自身を破壊的に操作するメソッドはありません。
Pathname のインスタンスメソッドには、ディレクトリのパスを返す Pathname#dirname のように、文字列操作だけで結果を返すものもあれば、ファイルの中身を読み出す Pathname#read のようにファイルシステムにアクセスするものもあります。
Pathname オブジェクトの生成には、Pathname.new のほかに Kernel#Pathname も使えます。
require 'pathname'
Pathname.new("foo/bar") # => #<Pathname:foo/bar>
Pathname("foo/bar") # => #<Pathname:foo/bar>
目次
- 特異メソッド
- インスタンスメソッド
-
- +
- /
- <=>
- ==
- ===
- absolute?
- ascend
- atime
- basename
- binread
- binwrite
- birthtime
- blockdev?
- chardev?
- children
- chmod
- chown
- cleanpath
- ctime
- delete
- descend
- directory?
- dirname
- each_child
- each_entry
- each_filename
- each_line
- empty?
- entries
- eql?
- executable?
- executable_real?
- exist?
- expand_path
- extname
- file?
- find
- fnmatch
- fnmatch?
- ftype
- glob
- grpowned?
- hash
- join
- lchmod
- lchown
- lstat
- make_link
- make_symlink
- mkdir
- mkpath
- mountpoint?
- mtime
- open
- opendir
- owned?
- parent
- pipe?
- read
- readable?
- readable_real?
- readlines
- readlink
- realdirpath
- realpath
- relative?
- relative_path_from
- rename
- rmdir
- rmtree
- root?
- setgid?
- setuid?
- size
- size?
- socket?
- split
- stat
- sticky?
- sub
- sub_ext
- symlink?
- sysopen
- to_path
- to_s
- truncate
- unlink
- utime
- world_readable?
- world_writable?
- writable?
- writable_real?
- write
- zero?
- 定数
特異メソッド
getwd -> Pathname
[permalink][rdoc][edit]pwd -> Pathname
-
カレントディレクトリを元に Pathname オブジェクトを生成します。 Pathname.new(Dir.getwd) と同じです。
require "pathname" Pathname.getwd #=> #<Pathname:/home/zzak/projects/ruby>
[SEE_ALSO] Dir.getwd
glob(pattern, flags=0) -> [Pathname]
[permalink][rdoc][edit]glob(pattern, flags=0) {|pathname| ...} -> nil
-
ワイルドカードの展開を行なった結果を、 Pathname オブジェクトの配列として返します。
引数の意味は、Dir.glob と同じです。 flag の初期値である 0 は「何も指定しない」ことを意味します。
ブロックが与えられたときは、ワイルドカードにマッチした Pathname オブジェクトを1つずつ引数としてそのブロックに与えて実行させます。この場合、値としては nil を返します。
- [PARAM] pattern:
- ワイルドカードパターンです
- [PARAM] flags:
- パターンマッチ時のふるまいを変化させるフラグを指定します
require "pathname" Pathname.glob("lib/i*.rb") # => [#<Pathname:lib/ipaddr.rb>, #<Pathname:lib/irb.rb>]
[SEE_ALSO] Dir.glob
[SEE_ALSO] Pathname#glob
new(path) -> Pathname
[permalink][rdoc][edit]-
文字列 path を元に Pathname オブジェクトを生成します。
- [PARAM] path:
- 文字列、または類似のオブジェクトを与えます。実際には to_str に反応するオブジェクトなら何でも構いません。
- [EXCEPTION] ArgumentError:
- path が \0 を含んでいると発生します。
require "pathname" Pathname.new(__FILE__) # => #<Pathname:/path/to/file.rb>
インスタンスメソッド
self + other -> Pathname
[permalink][rdoc][edit]self / other -> Pathname
-
パス名を連結します。つまり、other を self からの相対パスとした新しい Pathname オブジェクトを生成して返します。
other が絶対パスなら単に other と同じ内容の Pathname オブジェクトが返されます。
require 'pathname' Pathname("foo/bar")+"baz" # => #<Pathname:foo/bar/baz> Pathname("foo/bar/")+"baz" # => #<Pathname:foo/bar/baz> Pathname("foo/bar")+"/baz" # => #<Pathname:/baz> Pathname("foo/bar")+"../baz" # => #<Pathname:foo/baz>
- [PARAM] other:
- 文字列か Pathname オブジェクトを指定します。
self <=> other -> -1 | 0 | 1 | nil
[permalink][rdoc][edit]-
パス名を比較します。other と同じなら 0 を、ASCII順で self が大きい場合は正、other が大きい場合は負を返します。大文字小文字は区別されます。 other は Pathname オブジェクトでなければなりません。
パス名の比較は単純にパス文字列の比較によって行われるので、論理的に同じパスでもパス文字列が違えば異なると判断されます。
- [PARAM] other:
- 比較対象の Pathname オブジェクトを指定します。
require 'pathname' p Pathname.new("foo/bar") <=> Pathname.new("foo/bar") p Pathname.new("foo/bar") <=> Pathname.new("foo//bar") p Pathname.new("foo/../foo/bar") <=> Pathname.new("foo/bar") # => 0 # 1 # -1
self == other -> bool
[permalink][rdoc][edit]self === other -> bool
eql?(other) -> bool
-
パス名を比較し、 other と同じなら真を返します。大文字小文字は区別されます。 other は Pathname オブジェクトでなければなりません。
パス名の比較は単純にパス文字列の比較によって行われるので、論理的に同じパスでもパス文字列が違えば異なると判断されます。
- [PARAM] other:
- 比較対象の Pathname オブジェクトを指定します。
require 'pathname' p Pathname.new("foo/bar") == Pathname.new("foo/bar") p Pathname.new("foo/bar") == Pathname.new("foo//bar") p Pathname.new("foo/../foo/bar") == Pathname.new("foo/bar") # => true # false # false
absolute? -> bool
[permalink][rdoc][edit]-
self が絶対パス指定であれば真を返します。
require "pathname" pathname = Pathname("/path/to/example.rb") pathname.absolute? # => true pathname = Pathname("../") pathname.absolute? # => false
ascend {|pathname| ... } -> nil
[permalink][rdoc][edit]ascend -> Enumerator
-
self のパス名から親方向に辿っていったときの各パス名を新しい Pathname オブジェクトとして生成し、ブロックへの引数として渡して実行します。ブロックを省略した場合は Enumerator を返します。
require 'pathname' Pathname.new('/path/to/some/file.rb').ascend {|v| p v} # => #<Pathname:/path/to/some/file.rb> # #<Pathname:/path/to/some> # #<Pathname:/path/to> # #<Pathname:/path> # #<Pathname:/> Pathname.new('path/to/some/file.rb').ascend {|v| p v} # => #<Pathname:path/to/some/file.rb> # #<Pathname:path/to/some> # #<Pathname:path/to> # #<Pathname:path>
ファイルシステムにはアクセスしません。
atime -> Time
[permalink][rdoc][edit]-
File.atime(self.to_s) を渡したものと同じです。
require "pathname" pathname = Pathname("testfile") pathname.atime # => 2018-12-18 20:58:13 +0900
[SEE_ALSO] File.atime
basename(suffix = "") -> Pathname
[permalink][rdoc][edit]-
Pathname.new(File.basename(self.to_s, suffix)) と同じです。
- [PARAM] suffix:
- サフィックスを文字列で与えます。'.*' という文字列を与えた場合、'*' はワイルドカードとして働き '.' を含まない任意の文字列にマッチします。
require "pathname" Pathname("ruby/ruby.c").basename #=> #<Pathname:"ruby.c"> Pathname("ruby/ruby.c").basename(".c") #=> #<Pathname:"ruby"> Pathname("ruby/ruby.c").basename(".*") #=> #<Pathname:"ruby"> Pathname("ruby/ruby.exe").basename(".*") #=> #<Pathname:"ruby"> Pathname("ruby/y.tab.c").basename(".*") #=> #<Pathname:"y.tab">
[SEE_ALSO] File.basename
binread(*args) -> String | nil
[permalink][rdoc][edit]-
IO.binread(self.to_s, *args)と同じです。
require "pathname" pathname = Pathname("testfile") pathname.binread # => "This is line one\nThis is line two\nThis is line three\nAnd so on...\n" pathname.binread(20) # => "This is line one\nThi" pathname.binread(20, 10) # => "ne one\nThis is line "
[SEE_ALSO] IO.binread
binwrite(string, offset=nil) -> Integer
[permalink][rdoc][edit]-
IO.binwrite(self.to_s, *args)と同じです。
[SEE_ALSO] IO.binwrite
birthtime -> Time
[permalink][rdoc][edit]-
File.birthtime(self.to_s) を渡したものと同じです。
- [EXCEPTION] NotImplementedError:
- Windows のような birthtime のない環境で発生します。
[SEE_ALSO] File.birthtime
blockdev? -> bool
[permalink][rdoc][edit]-
FileTest.blockdev?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#blockdev?
chardev? -> bool
[permalink][rdoc][edit]-
FileTest.chardev?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#chardev?
children(with_directory = true) -> [Pathname]
[permalink][rdoc][edit]-
self 配下にあるパス名(Pathnameオブジェクト)の配列を返します。
ただし、 ".", ".." は要素に含まれません。
- [PARAM] with_directory:
- 偽を指定するとファイル名のみ返します。デフォルトは真です。
- [EXCEPTION] Errno::EXXX:
- self が存在しないパスであったりディレクトリでなければ例外が発生します。
require 'pathname' Pathname.new("/tmp").children # => [#<Pathname:.X11-unix>, #<Pathname:.iroha_unix>, ... ]
chmod(mode) -> Integer
[permalink][rdoc][edit]-
File.chmod(mode, self.to_s) と同じです。
- [PARAM] mode:
- ファイルのアクセス権限を整数で指定します。
[SEE_ALSO] File.chmod
chown(owner, group) -> Integer
[permalink][rdoc][edit]-
File.chown(owner, group, self.to_s) と同じです。
- [PARAM] owner:
- オーナーを指定します。
- [PARAM] group:
- グループを指定します。
require 'pathname' Pathname('testfile').stat.uid # => 501 Pathname('testfile').chown(502, 12) Pathname('testfile').stat.uid # => 502
[SEE_ALSO] File.chown, File#chown
cleanpath(consider_symlink = false) -> Pathname
[permalink][rdoc][edit]-
余計な "."、".." や "/" を取り除いた新しい Pathname オブジェクトを返します。
cleanpath は、実際にファイルシステムを参照することなく、文字列操作だけで処理を行います。
- [PARAM] consider_symlink:
- 真ならパス要素にシンボリックリンクがあった場合にも問題ないように .. を残します。
require "pathname" path = Pathname.new("//.././../") path # => #<Pathname://.././../> path.cleanpath # => #<Pathname:/> require 'pathname' Dir.rmdir("/tmp/foo") rescue nil File.unlink("/tmp/bar/foo") rescue nil Dir.rmdir("/tmp/bar") rescue nil Dir.mkdir("/tmp/foo") Dir.mkdir("/tmp/bar") File.symlink("../foo", "/tmp/bar/foo") path = Pathname.new("bar/././//foo/../bar") Dir.chdir("/tmp") path.cleanpath # => #<Pathname:bar/bar> path.cleanpath(true) # => #<Pathname:bar/foo/../bar>
ctime -> Time
[permalink][rdoc][edit]-
File.ctime(self.to_s) を渡したものと同じです。
require 'pathname' IO.write("testfile", "test") pathname = Pathname("testfile") pathname.ctime # => 2019-01-14 00:39:51 +0900 sleep 1 pathname.chmod(0755) pathname.ctime # => 2019-01-14 00:39:52 +0900
[SEE_ALSO] File.ctime
unlink -> Integer
[permalink][rdoc][edit]delete -> Integer
-
self が指すディレクトリあるいはファイルを削除します。
require "pathname" pathname = Pathname("/path/to/sample") pathname.exist? # => true pathname.unlink # => 1 pathname.exist? # => false
descend {|pathname| ... } -> nil
[permalink][rdoc][edit]descend -> Enumerator
-
self のパス名の親から子供へと辿っていったときの各パス名を新しい Pathname オブジェクトとして生成し、ブロックへの引数として渡して実行します。ブロックを省略した場合は Enumerator を返します。
require 'pathname' Pathname.new('/path/to/some/file.rb').descend {|v| p v} # => #<Pathname:/> # #<Pathname:/path> # #<Pathname:/path/to> # #<Pathname:/path/to/some> # #<Pathname:/path/to/some/file.rb> Pathname.new('path/to/some/file.rb').descend {|v| p v} # => #<Pathname:path> # #<Pathname:path/to> # #<Pathname:path/to/some> # #<Pathname:path/to/some/file.rb>
ファイルシステムにはアクセスしません。
directory? -> bool
[permalink][rdoc][edit]-
FileTest.directory?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#directory?
dirname -> Pathname
[permalink][rdoc][edit]-
Pathname.new(File.dirname(self.to_s)) と同じです。
require "pathname" Pathname('/usr/bin/shutdown').dirname # => #<Pathname:/usr/bin>
[SEE_ALSO] File.dirname
each_child(with_directory = true) -> Enumerator
[permalink][rdoc][edit]each_child(with_directory = true) {|pathname| ...} -> [Pathname]
-
self.children(with_directory).each と同じです。
- [PARAM] with_directory:
- 偽を指定するとファイル名のみ返します。デフォルトは真です。
require "pathname" Pathname("/usr/local").each_child {|f| p f } # => #<Pathname:/usr/local/bin> # => #<Pathname:/usr/local/etc> # => #<Pathname:/usr/local/include> # => #<Pathname:/usr/local/lib> # => #<Pathname:/usr/local/opt> # => #<Pathname:/usr/local/sbin> # => #<Pathname:/usr/local/share> # => #<Pathname:/usr/local/var> Pathname("/usr/local").each_child(false) {|f| p f } # => #<Pathname:bin> # => #<Pathname:etc> # => #<Pathname:include> # => #<Pathname:lib> # => #<Pathname:opt> # => #<Pathname:sbin> # => #<Pathname:share> # => #<Pathname:var>
[SEE_ALSO] Pathname#children
each_entry {|pathname| ... } -> nil
[permalink][rdoc][edit]each_entry -> Enumerator
-
Dir.foreach(self.to_s) {|f| yield Pathname.new(f) } と同じです。
ブロックを省略した場合は Enumerator を返します。
require "pathname" Pathname("/usr/local").each_entry {|f| p f } # => #<Pathname:.> # => #<Pathname:..> # => #<Pathname:bin> # => #<Pathname:etc> # => #<Pathname:include> # => #<Pathname:lib> # => #<Pathname:opt>
[SEE_ALSO] Dir.foreach
each_filename {|v| ... } -> nil
[permalink][rdoc][edit]-
self のパス名要素毎にブロックを実行します。
require 'pathname' Pathname.new("/foo/../bar").each_filename {|v| p v} # => "foo" # ".." # "bar"
each_line(*args) {|line| ... } -> nil
[permalink][rdoc][edit]each_line(*args) -> Enumerator
-
IO.foreach(self.to_s, *args, &block) と同じです。
require "pathname" IO.write("testfile", "line1\nline2,\nline3\n") Pathname("testfile").each_line # => #<Enumerator: IO:foreach("testfile")>
require "pathname" IO.write("testfile", "line1\nline2,\nline3\n") Pathname("testfile").each_line {|f| p f } # => "line1\n" # => "line2,\n" # => "line3\n"
require "pathname" IO.write("testfile", "line1\nline2,\nline3\n") Pathname("testfile").each_line(4) {|f| p f } # => "line" # => "1\n" # => "line" # => "2,\n" # => "line" # => "3\n"
require "pathname" IO.write("testfile", "line1\nline2,\nline3\n") Pathname("testfile").each_line(",") {|f| p f } # => "line1\nline2," # => "\nline3\n"
[SEE_ALSO] IO.foreach
empty? -> bool
[permalink][rdoc][edit]-
ディレクトリに対しては Dir.empty?(self.to_s) と同じ、他に対しては FileTest.empty?(self.to_s) と同じです。
require "pathname" require 'tmpdir' Pathname("/usr/local").empty? # => false Dir.mktmpdir { |dir| Pathname(dir).empty? } # => true
require "pathname" require 'tempfile' Pathname("testfile").empty? # => false Tempfile.create("tmp") { |tmp| Pathname(tmp).empty? } # => true
[SEE_ALSO] Dir.empty?, FileTest.#empty?, Pathname#zero?
entries -> [Pathname]
[permalink][rdoc][edit]-
self に含まれるファイルエントリ名を元にした Pathname オブジェクトの配列を返します。
- [EXCEPTION] Errno::EXXX:
- self が存在しないパスであったりディレクトリでなければ例外が発生します。
require 'pathname' require 'pp' pp Pathname('/usr/local').entries # => [#<Pathname:.>, # #<Pathname:..>, # #<Pathname:bin>, # #<Pathname:etc>, # #<Pathname:include>, # #<Pathname:lib>, # #<Pathname:opt>, # #<Pathname:sbin>, # #<Pathname:share>, # #<Pathname:var>]
[SEE_ALSO] Dir.entries
executable? -> bool
[permalink][rdoc][edit]-
FileTest.executable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#executable?
executable_real? -> bool
[permalink][rdoc][edit]-
FileTest.executable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#executable_real?
exist? -> bool
[permalink][rdoc][edit]-
FileTest.exist?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#exist?
expand_path(default_dir = '.') -> Pathname
[permalink][rdoc][edit]-
Pathname.new(File.expand_path(self.to_s, *args)) と同じです。
- [PARAM] default_dir:
- self が相対パスであれば default_dir を基準に展開されます。
require "pathname" path = Pathname("testfile") Pathname.pwd # => #<Pathname:/path/to> path.expand_path # => #<Pathname:/path/to/testfile> path.expand_path("../") # => #<Pathname:/path/testfile>
[SEE_ALSO] File.expand_path
extname -> String
[permalink][rdoc][edit]-
File.extname(self.to_s) と同じです。
[SEE_ALSO] File.extname
file? -> bool
[permalink][rdoc][edit]-
FileTest.file?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#file?
find(ignore_error: true) -> Enumerator
[permalink][rdoc][edit]find(ignore_error: true) {|pathname| ...} -> nil
-
self 配下のすべてのファイルやディレクトリを一つずつ引数 pathname に渡してブロックを実行します。
require 'find' Find.find(self.to_s) {|f| yield Pathname.new(f)}
と同じです。
ブロックを省略した場合は Enumerator を返します。
- [PARAM] ignore_error:
- 探索中に発生した例外を無視するかどうかを指定します。
[SEE_ALSO] Find.#find
fnmatch(pattern, *args) -> bool
[permalink][rdoc][edit]-
File.fnmatch(pattern, self.to_s, *args) と同じです。
- [PARAM] pattern:
- パターンを文字列で指定します。ワイルドカードとして `*', `?', `[]' が使用できます。Dir.glob とは違って `{}' や `**/' は使用できません。
- [PARAM] args:
- File.fnmatch を参照してください。
require "pathname" path = Pathname("testfile") path.fnmatch("test*") # => true path.fnmatch("TEST*") # => false path.fnmatch("TEST*", File::FNM_CASEFOLD) # => true
[SEE_ALSO] File.fnmatch
fnmatch?(pattern, *args) -> bool
[permalink][rdoc][edit]-
File.fnmatch?(pattern, self.to_s, *args) と同じです。
- [PARAM] pattern:
- パターンを文字列で指定します。ワイルドカードとして `*', `?', `[]' が使用できます。Dir.glob とは違って `{}' や `**/' は使用できません。
- [PARAM] args:
- File.fnmatch を参照してください。
[SEE_ALSO] File.fnmatch?
ftype -> String
[permalink][rdoc][edit]-
File.ftype(self.to_s) と同じです。
[SEE_ALSO] File.ftype
glob(pattern, flags=0) -> [Pathname]
[permalink][rdoc][edit]glob(pattern, flags=0) {|pathname| ...} -> nil
-
ワイルドカードの展開を行なった結果を、 Pathname オブジェクトの配列として返します。
引数の意味は、Dir.glob と同じです。 flag の初期値である 0 は「何も指定しない」ことを意味します。
ブロックが与えられたときは、ワイルドカードにマッチした Pathname オブジェクトを1つずつ引数としてそのブロックに与えて実行させます。この場合、値としては nil を返します。
このメソッドは内部で Dir.glob の base キーワード引数を使っています。
- [PARAM] pattern:
- ワイルドカードパターンです
- [PARAM] flags:
- パターンマッチ時のふるまいを変化させるフラグを指定します
require "pathname" Pathname("ruby-2.4.2").glob("R*.md") # => [#<Pathname:ruby-2.4.2/README.md>, #<Pathname:ruby-2.4.2/README.ja.md>]
[SEE_ALSO] Dir.glob
[SEE_ALSO] Pathname.glob
grpowned? -> bool
[permalink][rdoc][edit]-
FileTest.grpowned?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#grpowned?
hash -> Integer
[permalink][rdoc][edit]-
ハッシュ値を返します。
join(*args) -> Pathname
[permalink][rdoc][edit]-
与えられたパス名を連結します。
- [PARAM] args:
- 連結したいディレクトリ名やファイル名を文字列で与えます。
require "pathname" path0 = Pathname("/usr") # Pathname:/usr path0 = path0.join("bin/ruby") # Pathname:/usr/bin/ruby # 上記の path0 の処理は下記の path1 と同様のパスになります path1 = Pathname("/usr") + "bin/ruby" # Pathname:/usr/bin/ruby path0 == path1 #=> true
lchmod(mode) -> Integer
[permalink][rdoc][edit]-
File.lchmod(mode, self.to_s) と同じです。
- [PARAM] mode:
- ファイルのアクセス権限を整数で指定します。
[SEE_ALSO] File.lchmod
lchown(owner, group) -> Integer
[permalink][rdoc][edit]-
File.lchown(owner, group, self.to_s) と同じです。
- [PARAM] owner:
- オーナーを指定します。
- [PARAM] group:
- グループを指定します。
[SEE_ALSO] File.lchown
lstat -> File::Stat
[permalink][rdoc][edit]-
File.lstat(self.to_s) と同じです。
[SEE_ALSO] File.lstat
make_link(old) -> 0
[permalink][rdoc][edit]-
File.link(old, self.to_s) と同じです。
[SEE_ALSO] File.link
make_symlink(old) -> 0
[permalink][rdoc][edit]-
File.symlink(old, self.to_s) と同じです。
[SEE_ALSO] File.symlink
mkdir(*args) -> 0
[permalink][rdoc][edit]-
Dir.mkdir(self.to_s, *args) と同じです。
[SEE_ALSO] Dir.mkdir
mkpath -> nil
[permalink][rdoc][edit]-
FileUtils.mkpath(self.to_s) と同じです。
[SEE_ALSO] FileUtils.#mkpath
mountpoint? -> bool
[permalink][rdoc][edit]-
self がマウントポイントであれば真を返します。
require "pathname" path = Pathname("/") path.mountpoint? # => true path = Pathname("/usr") path.mountpoint? # => false
mtime -> Time
[permalink][rdoc][edit]-
File.mtime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.mtime
open(mode = 'r', perm = 0666) -> File
[permalink][rdoc][edit]open(mode = 'r', perm = 0666) {|file| ... } -> object
-
File.open(self.to_s, *args, &block) と同じです。
[SEE_ALSO] File.open
opendir -> Dir
[permalink][rdoc][edit]opendir {|dir| ... } -> nil
-
Dir.open(self.to_s, &block) と同じです。
[SEE_ALSO] Dir.open
owned? -> bool
[permalink][rdoc][edit]-
FileTest.owned?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#owned?
parent -> Pathname
[permalink][rdoc][edit]-
self の親ディレクトリを指す新しい Pathname オブジェクトを返します。
require "pathname" path = Pathname("/usr") path # => #<Pathname:/usr> path.parent # => #<Pathname:/>
require "pathname" path = Pathname("foo/bar") path.parent # => #<Pathname:foo> path.parent.parent # => #<Pathname:.> path.parent.parent.parent # => #<Pathname:..>
pipe? -> bool
[permalink][rdoc][edit]-
FileTest.pipe?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#pipe?
read(*args) -> String | nil
[permalink][rdoc][edit]-
IO.read(self.to_s, *args)と同じです。
[SEE_ALSO] IO.read
readable? -> bool
[permalink][rdoc][edit]-
FileTest.readable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#readable?
readable_real? -> bool
[permalink][rdoc][edit]-
FileTest.readable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#readable_real?
readlines(*args) -> [String]
[permalink][rdoc][edit]-
IO.readlines(self.to_s, *args)と同じです。
[SEE_ALSO] IO.readlines
readlink -> Pathname
[permalink][rdoc][edit]-
Pathname.new(File.readlink(self.to_s)) と同じです。
[SEE_ALSO] File.readlink
realdirpath(basedir = nil) -> Pathname
[permalink][rdoc][edit]-
Pathname#realpath とほぼ同じで、最後のコンポーネントは実際に存在しなくてもエラーになりません。
- [PARAM] basedir:
- ベースディレクトリを指定します。省略するとカレントディレクトリになります。
require "pathname" path = Pathname("/not_exist") path.realdirpath # => #<Pathname:/not_exist> path.realpath # => Errno::ENOENT # 最後ではないコンポーネント(/not_exist_1)も存在しないのでエラーになる。 path = Pathname("/not_exist_1/not_exist_2") path.realdirpath # => Errno::ENOENT
[SEE_ALSO] Pathname#realpath
realpath(basedir = nil) -> Pathname
[permalink][rdoc][edit]realpath -> Pathname
-
余計な "."、".." や "/" を取り除いた新しい Pathname オブジェクトを返します。
また、ファイルシステムをアクセスし、実際に存在するパスを返します。シンボリックリンクも解決されます。
self が指すパスが存在しない場合は例外 Errno::ENOENT が発生します。
- [PARAM] basedir:
- ベースディレクトリを指定します。省略するとカレントディレクトリになります。
require 'pathname' Dir.rmdir("/tmp/foo") rescue nil File.unlink("/tmp/bar/foo") rescue nil Dir.rmdir("/tmp/bar") rescue nil Dir.mkdir("/tmp/foo") Dir.mkdir("/tmp/bar") File.symlink("../foo", "/tmp/bar/foo") path = Pathname.new("bar/././//foo/../bar") Dir.chdir("/tmp") p path.realpath # => ruby 1.8.0 (2003-10-10) [i586-linux] # #<Pathname:/tmp/bar>
[SEE_ALSO] Pathname#realdirpath, File.realpath
relative? -> bool
[permalink][rdoc][edit]-
self が相対パス指定であれば真を返します。
require 'pathname' p = Pathname.new('/im/sure') p.relative? #=> false p = Pathname.new('not/so/sure') p.relative? #=> true
relative_path_from(base_directory) -> Pathname
[permalink][rdoc][edit]-
base_directory から self への相対パスを求め、その内容の新しい Pathname オブジェクトを生成して返します。
パス名の解決は文字列操作によって行われ、ファイルシステムをアクセスしません。
self が相対パスなら base_directory も相対パス、self が絶対パスなら base_directory も絶対パスでなければなりません。
- [PARAM] base_directory:
- ベースディレクトリを表す Pathname オブジェクトを指定します。
- [EXCEPTION] ArgumentError:
- Windows上でドライブが違うなど、base_directory から self への相対パスが求められないときに例外が発生します。
require 'pathname' path = Pathname.new("/tmp/foo") base = Pathname.new("/tmp") path.relative_path_from(base) # => #<Pathname:foo>
rename(to) -> 0
[permalink][rdoc][edit]-
File.rename(self.to_s, to) と同じです。
- [PARAM] to:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.rename
rmdir -> 0
[permalink][rdoc][edit]-
Dir.rmdir(self.to_s) と同じです。
[SEE_ALSO] Dir.rmdir
rmtree -> nil
[permalink][rdoc][edit]-
FileUtils.rm_r(self.to_s) と同じです。
[SEE_ALSO] FileUtils.#rm_r
root? -> bool
[permalink][rdoc][edit]-
self がルートディレクトリであれば真を返します。判断は文字列操作によって行われ、ファイルシステムはアクセスされません。
require 'pathname' Pathname('/').root? # => true Pathname('/im/sure').root? # => false
setgid? -> bool
[permalink][rdoc][edit]-
FileTest.setgid?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#setgid?
setuid? -> bool
[permalink][rdoc][edit]-
FileTest.setuid?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#setuid?
size -> Integer
[permalink][rdoc][edit]-
FileTest.size(self.to_s) と同じです。
[SEE_ALSO] FileTest.#size
size? -> bool
[permalink][rdoc][edit]-
FileTest.size?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#size?
socket? -> bool
[permalink][rdoc][edit]-
FileTest.socket?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#socket?
split -> Array
[permalink][rdoc][edit]-
File.split(self.to_s) と同じです。
require "pathname" pathname = Pathname("/path/to/sample") pathname.split # => [#<Pathname:/path/to>, #<Pathname:sample>]
[SEE_ALSO] File.split
stat -> File::Stat
[permalink][rdoc][edit]-
File.stat(self.to_s) と同じです。
[SEE_ALSO] File.stat
sticky? -> bool
[permalink][rdoc][edit]-
FileTest.sticky?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#sticky?
sub(pattern, replace) -> Pathname
[permalink][rdoc][edit]sub(pattern) {|matched| ... } -> Pathname
-
self を表現するパス文字列に対して sub メソッドを呼び出し、その結果を内容とする新しい Pathname オブジェクトを生成し、返します。
- [PARAM] pattern:
- 置き換える文字列のパターンを指定します。
- [PARAM] replace:
- pattern で指定した文字列と置き換える文字列を指定します。
require 'pathname' path1 = Pathname('/usr/bin/perl') path1.sub('perl', 'ruby') #=> #<Pathname:/usr/bin/ruby>
[SEE_ALSO] String#sub
sub_ext(replace) -> Pathname
[permalink][rdoc][edit]-
拡張子を与えられた文字列で置き換えた Pathname オブジェクトを返します。
自身が拡張子を持たない場合は、与えられた文字列を拡張子として付加します。
- [PARAM] replace:
- 拡張子を文字列で指定します。
require "pathname" Pathname('/usr/bin/shutdown').sub_ext('.rb') # => #<Pathname:/usr/bin/shutdown.rb> Pathname('/home/user/test.txt').sub_ext('.pdf') # => #<Pathname:/home/user/test.pdf> Pathname('/home/user/test').sub_ext('.pdf') # => #<Pathname:/home/user/test.pdf> Pathname('/home/user/test.').sub_ext('.pdf') # => #<Pathname:/home/user/test..pdf> Pathname('/home/user/.test').sub_ext('.pdf') # => #<Pathname:/home/user/.test.pdf> Pathname('/home/user/test.tar.gz').sub_ext('.xz') # => #<Pathname:/home/user/test.tar.xz>
symlink? -> bool
[permalink][rdoc][edit]-
FileTest.symlink?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#symlink?
sysopen(*args) -> Integer
[permalink][rdoc][edit]-
IO.sysopen(self.to_s, *args)と同じです。
[SEE_ALSO] IO.sysopen
to_path -> String
[permalink][rdoc][edit]-
File.open などの引数に渡す際に呼ばれるメソッドです。 Pathname オブジェクトにおいては、 to_s と同じです。
[SEE_ALSO] Pathname#to_s
to_s -> String
[permalink][rdoc][edit]-
パス名を文字列で返します。
require 'pathname' path = Pathname.new("/tmp/hogehoge") File.open(path)
truncate(length) -> 0
[permalink][rdoc][edit]-
File.truncate(self.to_s, length) と同じです。
- [PARAM] length:
- 変更したいサイズを整数で与えます。
[SEE_ALSO] File.truncate
utime(atime, mtime) -> Integer
[permalink][rdoc][edit]-
File.utime(atime, mtime, self.to_s) と同じです。
- [PARAM] atime:
- 最終アクセス時刻を Time か、起算時からの経過秒数を数値で指定します。
- [PARAM] mtime:
- 更新時刻を Time か、起算時からの経過秒数を数値で指定します。
[SEE_ALSO] File.utime
world_readable? -> bool
[permalink][rdoc][edit]-
FileTest.world_readable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#world_readable?
world_writable? -> bool
[permalink][rdoc][edit]-
FileTest.world_writable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#world_writable?
writable? -> bool
[permalink][rdoc][edit]-
FileTest.writable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#writable?
writable_real? -> bool
[permalink][rdoc][edit]-
FileTest.writable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#writable_real?
write(string, offset=nil, **opts) -> Integer
[permalink][rdoc][edit]-
IO.write(self.to_s, string, offset, **opts)と同じです。
[SEE_ALSO] IO.write
zero? -> bool
[permalink][rdoc][edit]-
FileTest.zero?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#zero? , Pathname#empty?
定数
SEPARATOR_PAT -> Regexp
[permalink][rdoc][edit]-
パス名のなかのディレクトリを区切る部分にマッチする正規表現です。
この値は環境依存です。
TO_PATH -> Symbol
[permalink][rdoc][edit]-
内部的に使っている定数です。利用者が使うことはありません。