class Pathname
クラスの継承リスト: Pathname < Object < Kernel
要約
パス名をオブジェクト指向らしく扱うクラスです。
Pathname オブジェクトはパス名を表しており、ファイルやディレクトリそのものを表してはいません。 当然、存在しないファイルのパス名も扱えます。
絶対パスも相対パスも扱えます。
Pathname オブジェクトは immutable であり、自身を破壊的に操作するメソッドはありません。
Pathname のインスタンスメソッドには、ディレクトリのパスを返す Pathname#dirname のように、 文字列操作だけで結果を返すものもあれば、ファイルの中身を読み出す Pathname#read のように ファイルシステムにアクセスするものもあります。
Pathname オブジェクトの生成には、Pathname.new のほかに Kernel#Pathname も使えます。
Pathname.new("foo/bar") # => #<Pathname:foo/bar> Pathname("foo/bar") # => #<Pathname:foo/bar>
特異メソッド
getwd -> Pathname
pwd -> 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] flags:
- パターンマッチ時のふるまいを変化させるフラグを指定します
new(path) -> Pathname
-
文字列 path を元に Pathname オブジェクトを生成します。
- [PARAM] path:
- 文字列、または類似のオブジェクトを与えます。 実際には to_str に反応するオブジェクトなら何でも構いません。
- [EXCEPTION] ArgumentError:
- path が \0 を含んでいると発生します。
インスタンスメソッド
self + other -> Pathname
-
パス名を連結します。つまり、other を self からの相対パスとした新しい Pathname オブジェクトを生成して返します。
other が絶対パスなら単に other と同じ内容の 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 -> bool
-
パス名を比較します。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
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
-
self が絶対パス指定であれば真を返します。
ascend {|pathname| ... } -> nil
-
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 -> Time
-
File.atime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.atime
basename(suffix = "") -> Pathname
-
Pathname.new(File.basename(self.to_s, suffix)) と同じです。
- [PARAM] suffix:
- サフィックスを文字列で与えます。'.*' という文字列を与えた場合、'*' はワイルドカードとして働き '.' を含まない任意の文字列にマッチします。
[SEE_ALSO] File.basename
blockdev? -> bool
-
FileTest.blockdev?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#blockdev?
chardev? -> bool
-
FileTest.chardev?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#chardev?
chdir {|path| ... } -> object
-
このメソッドは obsolete です。 代わりに Dir.chdir を使ってください。
Dir.chdir(self.to_s, &block) と同じです。
[SEE_ALSO] Dir.chdir
children(with_directory = true) -> [Pathname]
-
self 配下にあるパス名(Pathnameオブジェクト)の配列を返します。
ただし、 ".", ".." は要素に含まれません。
- [PARAM] with_directory:
- 偽を指定するとファイル名のみ返します。デフォルトは真です。
- [EXCEPTION] Errno::EXXX:
- self が存在しないパスであったりディレクトリでなければ例外が発生します。
require 'pathname' Pathname.new("/tmp").children # => [#<Pathname:.X11-unix>, #<Pathname:.iroha_unix>, ... ]
chmod(mode) -> Integer
-
File.chmod(mode, self.to_s) と同じです。
- [PARAM] mode:
- ファイルのアクセス権限を整数で指定します。
[SEE_ALSO] File.chmod
chown(owner, group) -> Integer
-
File.chown(owner, group, self.to_s) と同じです。
- [PARAM] owner:
- オーナーを指定します。
- [PARAM] group:
- グループを指定します。
[SEE_ALSO] File.chown
chroot -> 0
-
このメソッドは obsolete です。 代わりに Dir.chroot を使ってください。
Dir.chroot(self.to_s) と同じです。
[SEE_ALSO] Dir.chroot
cleanpath(consider_symlink = false) -> Pathname
-
余計な "."、".." や "/" を取り除いた新しい 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
-
File.ctime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.ctime
unlink -> 0
delete -> 0
-
self が指すディレクトリあるいはファイルを削除します。
descend {|pathname| ... } -> nil
-
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>
ファイルシステムにはアクセスしません。
dir_foreach {|pathname| ... } -> nil
-
このメソッドは obsolete です。 代わりに Pathname#each_entry メソッドを使ってください。
Dir.foreach(self.to_s) {|f| yield Pathname.new(f) } と同じです。
[SEE_ALSO] Dir.foreach
directory? -> bool
-
FileTest.directory?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#directory?
dirname -> Pathname
-
Pathname.new(File.dirname(self.to_s)) と同じです。
[SEE_ALSO] File.dirname
each_entry {|pathname| ... } -> nil
-
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) {|line| ... } -> nil
each_line(*args) -> Enumerable::Enumerator
-
IO.foreach(self.to_s, *args, &block) と同じです。
[SEE_ALSO] IO.foreach
entries -> [Pathname]
-
self に含まれるファイルエントリ名を元にした Pathname オブジェクトの配列を返します。
- [EXCEPTION] Errno::EXXX:
- self が存在しないパスであったりディレクトリでなければ例外が発生します。
[SEE_ALSO] Dir.entries
executable? -> bool
-
FileTest.executable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#executable?
executable_real? -> bool
-
FileTest.executable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#executable_real?
exist? -> bool
-
FileTest.exist?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#exist?
expand_path(default_dir = '.') -> Pathname
-
Pathname.new(File.expand_path(self.to_s, *args)) と同じです。
- [PARAM] default_dir:
- self が相対パスであれば default_dir を基準に展開されます。
[SEE_ALSO] File.expand_path
extname -> String
-
File.extname(self.to_s) と同じです。
[SEE_ALSO] File.extname
file? -> bool
-
FileTest.file?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#file?
find {|pathname| ...} -> nil
-
self 配下のすべてのファイルやディレクトリを 一つずつ引数 pathname に渡してブロックを実行します。
require 'find' Find.find(self.to_s) {|f| yield Pathname.new(f)}
と同じです。
[SEE_ALSO] Find.#find
fnmatch(pattern, *args) -> bool
-
File.fnmatch(pattern, self.to_s, *args) と同じです。
- [PARAM] pattern:
- パターンを文字列で指定します。ワイルドカードとして `*', `?', `[]' が使用できま す。Dir.glob とは違って `{}' や `**/' は使用できません。
- [PARAM] args:
- File.fnmatch を参照してください。
[SEE_ALSO] File.fnmatch
fnmatch?(pattern, *args) -> bool
-
File.fnmatch?(pattern, self.to_s, *args) と同じです。
- [PARAM] pattern:
- パターンを文字列で指定します。ワイルドカードとして `*', `?', `[]' が使用できま す。Dir.glob とは違って `{}' や `**/' は使用できません。
- [PARAM] args:
- File.fnmatch を参照してください。
[SEE_ALSO] File.fnmatch?
foreach(*args) {|path| ... } -> nil
-
このメソッドは obsolete です。 each_line か each_entry を使ってください。
self の指し示すパスがディレクトリなら Dir.foreach(self.to_s, *args, &block) と、さもなければ IO.foreach(self.to_s, *args, &block) と同じです。
foreachline(*args) {|line| ... } -> nil
-
IO.foreach(self.to_s, *args, &block) と同じです。
このメソッドは obsolete です。 代わりに Pathname#each_line を使ってください。
[SEE_ALSO] IO.foreach
ftype -> String
-
File.ftype(self.to_s) と同じです。
[SEE_ALSO] File.ftype
grpowned? -> bool
-
FileTest.grpowned?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#grpowned?
hash -> Fixnum
-
ハッシュ値を返します。
join(*args) -> Pathname
-
与えられたパス名を連結します。
- [PARAM] args:
- 連結したいディレクトリ名やファイル名を文字列で与えます。
lchmod(mode) -> Integer
-
File.lchmod(mode, self.to_s) と同じです。
- [PARAM] mode:
- ファイルのアクセス権限を整数で指定します。
[SEE_ALSO] File.lchmod
lchown(owner, group) -> Integer
-
File.lchown(owner, group, self.to_s) と同じです。
- [PARAM] owner:
- オーナーを指定します。
- [PARAM] group:
- グループを指定します。
[SEE_ALSO] File.lchown
link(old) -> 0
-
レシーバと引数がシステムコールの引数と逆順に対応していて紛らわしいため、 このメソッドは obsolete です。 代わりに Pathname#make_link を使ってください。
File.link(old, self.to_s) と同じです。
- [PARAM] old:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.link
lstat -> File::Stat
-
File.lstat(self.to_s) と同じです。
[SEE_ALSO] File.lstat
make_link(old) -> 0
-
File.link(old, self.to_s) と同じです。
[SEE_ALSO] File.link
make_symlink(old) -> 0
-
File.symlink(old, self.to_s) と同じです。
[SEE_ALSO] File.symlink
mkdir(*args) -> 0
-
Dir.mkdir(self.to_s, *args) と同じです。
[SEE_ALSO] Dir.mkdir
mkpath -> nil
-
FileUtils.mkpath(self.to_s) と同じです。
[SEE_ALSO] FileUtils.#mkpath
mountpoint? -> bool
-
self がマウントポイントであれば真を返します。
mtime -> Time
-
File.mtime(self.to_s) を渡したものと同じです。
[SEE_ALSO] File.mtime
open(mode = 'r', perm = 0666) -> File
open(mode = 'r', perm = 0666) {|file| ... } -> object
-
File.open(self.to_s, *args, &block) と同じです。
[SEE_ALSO] File.open
opendir -> Dir
opendir {|dir| ... } -> nil
-
Dir.open(self.to_s, &block) と同じです。
[SEE_ALSO] Dir.open
owned? -> bool
-
FileTest.owned?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#owned?
parent -> Pathname
-
self の親ディレクトリを指す新しい Pathname オブジェクトを返します。
pipe? -> bool
-
FileTest.pipe?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#pipe?
read(*args) -> String | nil
-
IO.read(self.to_s, *args)と同じです。
[SEE_ALSO] IO.read
readable? -> bool
-
FileTest.readable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#readable?
readable_real? -> bool
-
FileTest.readable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#readable_real?
readlines(*args) -> [String]
-
IO.readlines(self.to_s, *args)と同じです。
[SEE_ALSO] IO.readlines
readlink -> Pathname
-
Pathname.new(File.readlink(self.to_s)) と同じです。
[SEE_ALSO] File.readlink
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>
relative? -> bool
-
self が相対パス指定であれば真を返します。
relative_path_from(base_directory) -> Pathname
-
base_directory から self への相対パスを求め、その内容の新しい Pathname オブジェクトを生成して返します。
パス名の解決は文字列操作によって行われ、ファイルシステムをアクセス しません。
self が相対パスなら base_directory も相対パス、self が絶対パスなら base_directory も絶対パスでなければなりません。
- [PARAM] base_directory:
- ベースディレクトリを表す Pathname オブジェクトを指定します。
require 'pathname' path = Pathname.new("/tmp/foo") base = Pathname.new("/tmp") path.relative_path_from(base) # => #<Pathname:foo>
rename(to) -> 0
-
File.rename(self.to_s, to) と同じです。
- [PARAM] to:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.rename
rmdir -> 0
-
Dir.rmdir(self.to_s) と同じです。
[SEE_ALSO] Dir.rmdir
rmtree -> nil
-
FileUtils.rm_r(self.to_s) と同じです。
[SEE_ALSO] FileUtils.#rm_r
root? -> bool
-
self がルートディレクトリであれば真を返します。判断は文字列操作によっ て行われ、ファイルシステムはアクセスされません。
setgid? -> bool
-
FileTest.setgid?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#setgid?
setuid? -> bool
-
FileTest.setuid?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#setuid?
size -> Integer
-
FileTest.size(self.to_s) と同じです。
[SEE_ALSO] FileTest.#size
size? -> bool
-
FileTest.size?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#size?
socket? -> bool
-
FileTest.socket?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#socket?
split -> Array
-
File.split(self.to_s) と同じです。
[SEE_ALSO] File.split
stat -> File::Stat
-
File.stat(self.to_s) と同じです。
[SEE_ALSO] File.stat
sticky? -> bool
-
FileTest.sticky?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#sticky?
sub(pattern, replace) -> Pathname
sub(pattern) {|matched| ... } -> Pathname
-
self を表現するパス文字列に対して sub メソッドを呼び出し、その結果を内 容とする新しい Pathname オブジェクトを生成し、返します。
- [PARAM] pattern:
- 置き換える文字列のパターンを指定します。
- [PARAM] replace:
- pattern で指定した文字列と置き換える文字列を指定します。
[SEE_ALSO] String#sub
symlink(old) -> 0
-
レシーバと引数がシステムコールの引数と逆順に対応していて紛らわしいため、 このメソッドは obsolete です。 代わりに Pathname#make_symlink を使ってください。
File.symlink(old, self.to_s) と同じです。
- [PARAM] old:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.symlink
symlink? -> bool
-
FileTest.symlink?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#symlink?
sysopen(*args) -> Integer
-
IO.sysopen(self.to_s, *args)と同じです。
[SEE_ALSO] IO.sysopen
to_s -> String
to_str -> String
-
パス名を文字列で返します。
to_str は、File.open などの引数にそのまま Pathname オブジェクトを 渡せるようにするために用意されています。
require 'pathname' path = Pathname.new("/tmp/hogehoge") File.open(path)
truncate(length) -> 0
-
File.truncate(self.to_s, length) と同じです。
- [PARAM] length:
- 変更したいサイズを整数で与えます。
[SEE_ALSO] File.truncate
utime(atime, mtime) -> Integer
-
File.utime(atime, mtime, self.to_s) と同じです。
- [PARAM] atime:
- 最終アクセス時刻を Time か、起算時からの経過秒数を数値で指定します。
- [PARAM] utime:
- 更新時刻を Time か、起算時からの経過秒数を数値で指定します。
[SEE_ALSO] File.utime
world_readable? -> bool
-
FileTest.world_readable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#world_readable?
world_writable? -> bool
-
FileTest.world_writable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#world_writable?
writable? -> bool
-
FileTest.writable?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#writable?
writable_real? -> bool
-
FileTest.writable_real?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#writable_real?
zero? -> bool
-
FileTest.zero?(self.to_s) と同じです。
[SEE_ALSO] FileTest.#zero?
定数
SEPARATOR_PAT -> Regexp
-
パス名のなかのディレクトリを区切る部分にマッチする正規表現です。
この値は環境依存です。
TO_PATH -> Symbol
-
内部的に使っている定数です。利用者が使うことはありません。