Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > pathnameライブラリ > Pathnameクラス
class Pathname
クラスの継承リスト: Pathname < Object < Kernel < BasicObject
Abstract
パス名クラス
特異メソッド
getwd -> Pathnamepwd -> Pathname-
カレントディレクトリを元に Pathname オブジェクトを生成します。 Pathname.new(Dir.getwd) と同じです。
glob(pattern, flags=0) -> [Pathname]glob(pattern, flags=0) {|pathname| ...} -> nil-
ワイルドカードの展開を行なった結果を、 Pathname オブジェクトの配列として返します。
引数の意味は、Dir.glob と同じです。 flag の初期値である 0 は「何 も指定しない」ことを意味します。
ブロックが与えられたときは、ワイルドカードにマッチした Pathname オブジェ クトを1つずつ引数としてそのブロックに与えて実行させます。この場合、値と しては nil を返します。
- [PARAM] pattern:
- ワイルドカードパターンです
- [PARAM] flag:
- パターンマッチ時のふるまいを変化させるフラグを指定します
new(path) -> Pathname-
文字列 path を元に Pathname オブジェクトを生成します。
インスタンスメソッド
self + other -> Pathname-
パス名を連結します。つまり、other を self からの相対パスとした新しい Pathname オブジェクトを生成して返します。
other が絶対パスなら単に other と同じ内容の Pathname オブジェクトが返さ れます。
- [PARAM] other:
- 文字列か Pathname オブジェクトを指定します。
self <=> other -> bool-
パス名を比較します。other と同じなら 0 を、ASCII順で self が大きい場合 は正、other が大きい場合は負を返します。大文字小文字は区別されます。 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 -> boolself === other -> booleql?(other) -> bool-
パス名を比較し、 other と同じなら真を返します。大文字小文字は区別されます。 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-
self が絶対パス指定であれば真を返します。
ascend { |pathname| ... }-
self のパス名から親方向に辿っていったときの各パス名を新しい 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-
File.atime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.atime
basename(*args)-
Pathname.new(File.basename(self.to_s, *args)) と同じです。
[SEE_ALSO] File.basename
binread(*args)-
IO.binread(self.to_s, *args)と同じです。
[SEE_ALSO] IO.binread
blockdev?-
FileTest.blockdev?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#blockdev?
chardev?-
FileTest.chardev?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#chardev?
children -> [Pathname]-
self 配下にあるパス名(Pathnameオブジェクト)の配列を返します。
require 'pathname' p Pathname.new("/tmp").children => ruby 1.8.0 (2003-10-10) [i586-linux] [#<Pathname:.X11-unix>, #<Pathname:.iroha_unix>, ... ]ただし、 ".", ".." は要素に含まれません。
self が存在しないパスであったりディレクトリでなければ例外 Errno::EXXX が発生します。
chmod(mode)-
File.chmod(mode, self.to_s) と同じです。
[SEE_ALSO] File.chmod
chown(owner, group)-
File.chown(owner, group, self.to_s) と同じです。
[SEE_ALSO] File.chown
cleanpath(consider_symlink = false) -> Pathname-
余計な "."、".." や "/" を取り除いた新しい Pathname オブジェクトを返します。
require "pathname" path = Pathname.new("//.././../") p path # => #<Pathname://.././../> p path.cleanpath # => #<Pathname:/>consider_symlink が真ならパス要素にシンボリックリンクがあった場合 にも問題ないように .. を残します。
cleanpath は、実際にファイルシステムを参照することなく、文字列操作 だけで処理を行います。
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.cleanpath p path.cleanpath(true) => ruby 1.8.0 (2003-10-10) [i586-linux] #<Pathname:bar/bar> #<Pathname:bar/foo/../bar> ctime-
File.ctime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.ctime
unlinkdelete-
self が指すディレクトリあるいはファイルを削除します。
descend { |pathname| ... }-
self のパス名の親から子供へと辿っていったときの各パス名を新しい 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?-
FileTest.directory?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#directory?
dirname-
Pathname.new(File.dirname(self.to_s)) と同じです。
[SEE_ALSO] File.dirname
each_child(with_directory=true) -> Enumeratoreach_child(with_directory=true) {|pathname| ...} -> [Pathname]-
self.children(with_directory).each とほぼ同じです。
[SEE_ALSO] Pathname#children
each_entry {|pathname| ... }-
Dir.foreach(self.to_s) {|f| yield Pathname.new(f) } と同じです。
[SEE_ALSO] Dir.foreach
each_filename {|v| ... } -> nil-
self のパス名要素毎にブロックを実行します。
require 'pathname' Pathname.new("/foo/../bar").each_filename {|v| p v} # => "foo" ".." "bar" each_line(*args, &block)-
IO.foreach(self.to_s, *args, &block) と同じです。
[SEE_ALSO] IO.foreach
entries-
Dir.entries(self.to_s) と同じです。
[SEE_ALSO] Dir.entries
executable?-
FileTest.executable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#executable?
executable_real?-
FileTest.executable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#executable_real?
exist?-
FileTest.exist?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#exist?
expand_path(*args)-
Pathname.new(File.expand_path(self.to_s, *args)) と同じです。
[SEE_ALSO] File.expand_path
extname-
File.extname(self.to_s) と同じです。
[SEE_ALSO] File.extname
file?-
FileTest.file?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#file?
find {|pathname| ...}-
self 配下のすべてのファイルやディレクトリを 一つずつ引数 pathname に渡してブロックを実行します。
require 'find' Find.find(self.to_s) {|f| yield Pathname.new(f)}と同じです。
[SEE_ALSO] Find.#find
fnmatch(pattern, *args)-
File.fnmatch(pattern, self.to_s, *args) と同じです。
[SEE_ALSO] File.fnmatch
fnmatch?(pattern, *args)-
File.fnmatch?(pattern, self.to_s, *args) と同じです。
[SEE_ALSO] File.fnmatch?
foreach(*args, &block)-
self の指し示すパスがディレクトリなら Dir.foreach(self.to_s, *args, &block) と、さもなければ IO.foreach(self.to_s, *args, &block) と同じです。
このメソッドは obsolete です。 each_line か each_entry を使ってください。
ftype-
File.ftype(self.to_s) と同じです。
[SEE_ALSO] File.ftype
grpowned?-
FileTest.grpowned?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#grpowned?
hash -> Fixnum-
ハッシュ値を返します。
join(*args)-
Pathname.new(File.join(self.to_s, *args)) と同じです。
[SEE_ALSO] File.join
lchmod(mode)-
File.lchmod(mode, self.to_s) と同じです。
[SEE_ALSO] File.lchmod
lchown(owner, group)-
File.lchown(owner, group, self.to_s) と同じです。
[SEE_ALSO] File.lchown
lstat-
File.lstat(self.to_s) と同じです。
[SEE_ALSO] File.lstat
make_link(old)-
File.link(old, self.to_s) と同じです。
[SEE_ALSO] File.link
make_symlink(old)-
File.symlink(old, self.to_s) と同じです。
[SEE_ALSO] File.symlink
mkdir(*args)-
Dir.mkdir(self.to_s, *args) と同じです。
[SEE_ALSO] Dir.mkdir
mkpath-
FileUtils.mkpath(self.to_s) と同じです。
[SEE_ALSO] FileUtils.#mkpath
mountpoint? -> bool-
self がマウントポイントであれば真を返します。
mtime-
File.mtime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.mtime
open(*args, &block)-
File.open(self.to_s, *args, &block) と同じです。
[SEE_ALSO] File.open
opendir(&block)-
Dir.open(self.to_s, &block) と同じです。
[SEE_ALSO] Dir.open
owned?-
FileTest.owned?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#owned?
parent -> Pathname-
self の親ディレクトリを指す新しい Pathname オブジェクトを返します。
pipe?-
FileTest.pipe?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#pipe?
read(*args)-
IO.read(self.to_s, *args)と同じです。
[SEE_ALSO] IO.read
readable?-
FileTest.readable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#readable?
readable_real?-
FileTest.readable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#readable_real?
readlines(*args)-
IO.readlines(self.to_s, *args)と同じです。
[SEE_ALSO] IO.readlines
readlink-
Pathname.new(File.readlink(self.to_s)) と同じです。
[SEE_ALSO] File.readlink
realdirpath -> Pathname-
Pathname#realpath とほぼ同じで、最後のコンポーネントは実際に 存在しなくてもエラーになりません。
[SEE_ALSO] Pathname#realpath
realpath -> Pathname-
余計な "."、".." や "/" を取り除いた新しい Pathname オブジェクトを返します。
また、ファイルシステムをアクセスし、実際に存在するパスを返します。 シンボリックリンクも解決されます。
self が指すパスが存在しない場合は例外 Errno::ENOENT が発生します。
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
relative? -> bool-
self が相対パス指定であれば真を返す。
relative_path_from(base_directory) -> Pathname-
base_direcoty から self への相対パスを求め、その内容の新しい Pathname オブジェクトを生成して返します。
パス名の解決は文字列操作によって行われ、ファイルシステムをアクセス しません。
require 'pathname' path = Pathname.new("/tmp/foo") base = Pathname.new("/tmp") p path.relative_path_from(base) # => ruby 1.8.0 (2003-10-10) [i586-linux] #<Pathname:foo>self が相対パスなら base_directory も相対パス、self が絶対パスなら base_directory も絶対パスでなければなりません。
base_directory は Pathname オブジェクトでなければなりません。
rename(to)-
File.rename(self.to_s, to) と同じです。
[SEE_ALSO] File.rename
rmdir-
Dir.rmdir(self.to_s) と同じです。
[SEE_ALSO] Dir.rmdir
rmtree-
FileUtils.rm_r(self.to_s) と同じです。
[SEE_ALSO] FileUtils.#rm_r
root? -> bool-
self がルートディレクトリであれば真を返します。判断は文字列操作によっ て行われ、ファイルシステムはアクセスされません。
setgid?-
FileTest.setgid?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#setgid?
setuid?-
FileTest.setuid?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#setuid?
size-
FileTest.size(self.to_s) と同じです。
[SEE_ALSO] FileTest.#size
size?-
FileTest.size?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#size?
socket?-
FileTest.socket?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#socket?
split-
File.split(self.to_s) と同じです。
[SEE_ALSO] File.split
stat-
File.stat(self.to_s) と同じです。
[SEE_ALSO] File.stat
sticky?-
FileTest.sticky?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#sticky?
sub(pattern, replace) -> Pathnamesub(pattern) {|matched| ... } -> Pathname-
self を表現するパス文字列に対して sub メソッドを呼び出し、その結果を内 容とする新しい Pathname オブジェクトを生成し、返します。 cf. String#sub
symlink?-
FileTest.symlink?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#symlink?
sysopen(*args)-
IO.sysopen(self.to_s, *args)と同じです。
[SEE_ALSO] IO.sysopen
to_path-
File.open などの引数に渡す際に呼ばれるメソッドです。 Pathname オブジェ クトにおいては、 to_s と同じです。
to_s -> Stringto_str -> String-
パス名を文字列で返します。
to_str は、File.open などの引数にそのまま Pathname オブジェクトを 渡せるようにするために用意されています。
require 'pathname' path = Pathname.new("/tmp/hogehoge") File.open(path) truncate(length)-
File.truncate(self.to_s, length) と同じです。
[SEE_ALSO] File.truncate
utime(atime, mtime)-
File.utime(atime, mtime, self.to_s) と同じです。
[SEE_ALSO] File.utime
world_readable?-
FileTest.world_readable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#world_readable?
world_writable?-
FileTest.world_writable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#world_writable?
writable?-
FileTest.writable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#writable?
writable_real?-
FileTest.writable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#writable_real?
zero?-
FileTest.zero?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#zero?
定数
SEPARATOR_PAT-
パス名のなかのディレクトリを区切る部分にマッチする正規表現です。
TO_PATH-
内部的に使っている定数です。利用者が使うことはありません。