All Libraries > library _builtin > class File

class File

ancestors: File < IO < Enumerable < File::Constants < Object < Kernel

Abstract

ファイルアクセスのためのクラスです。

通常 Kernel.#open または File.open を使って生成します。 IO クラスがインクルードしている File::Constants は File クラスに関係する定数を 格納したモジュールです。 また File::Stat は stat 構造体( stat(2) 参照)を表すクラスです。

Singleton Methods

signaturedescription
atime(filename) -> Time

最終アクセス時刻を返します。

basename(filename, suffix = "") -> String

filename の一番後ろのスラッシュに続く要素を返します。もし、 引数 suffix が与えられて、かつそれが filename の末尾に 一致するなら、それを取り除いたものを返します。

blockdev?(path) -> bool

FileTest.#blockdev? と同じです。

chardev?(path) -> bool

FileTest.#chardev? と同じです。

chmod(mode, files[, ...][, verbose = false])

(複数の)ファイルの属性を変えます。 オリジナルの File.chmod に verbose の指定が 追加されるだけです。

ftools
chmod(mode, *filename) -> Integer

ファイルのモードを mode に変更します。モードを変更したファイ ルの数を返します。

chown(owner, group, *filename) -> Integer

ファイルのオーナーとグループを変更します。スーパーユーザだけがファ イルのオーナーとグループを変更できます。変更を行ったファイルの数を 返します。

ctime(filename) -> Time

状態が最後に変更された時刻を返します。 状態の変更とは chmod などによるものです。

delete(*filename) -> Integer
unlink(*filename) -> Integer

ファイルを削除します。削除したファイルの数を返します。 削除に失敗した場合は例外 Errno::EXXX が発生します。

directory?(path) -> bool

FileTest.#directory? と同じです。

dirname(filename) -> String

filename の一番後ろのスラッシュより前を文 字列として返します。スラッシュを含まないファイル名に対しては "."(カレントディレクトリ)を返します。

executable?(path) -> bool

FileTest.#executable? と同じです。

executable_real?(path) -> bool

FileTest.#executable_real? と同じです。

exist?(path) -> bool

FileTest.#exist? と同じです。

exists?(path) -> bool

このメソッドはobsoleteです。

expand_path(path, default_dir = '.') -> String

path を絶対パスに展開した文字列を返します。 path が相対パスであれば default_dir を基準にします。

extname(filename) -> String

ファイル名 filename の拡張子部分(最後の "." に続く文字列)を 返します。ディレクトリ名に含まれる "." や、ファイル名先頭の "." は拡張子の一部としては見なされません。filename に拡張子が含 まれない場合は空文字列を返します。

file?(path) -> bool

FileTest.#file? と同じです。

fnmatch(pattern, path, flags = 0) -> bool
fnmatch?(pattern, path, flags = 0) -> bool

ファイル名のパターンマッチ fnmatch(3) を行います。 path が pattern にマッチすれば真を返します。そうでない場合には false を返します。

new(fd, mode = "r") -> IO
for_fd(fd, mode = "r") -> IO
open(fd, mode = "r") -> IO
open(fd, mode = "r") {|io| ... } -> object

オープン済みのファイルディスクリプタ fd に対する新しい IO オブジェクトを生成して返します。

IO
foreach(path, rs = $/) {|line| ... } -> nil

path で指定されたファイルの各行を引数としてブロックを繰り返し実行します。 path のオープンに成功すれば nil を返します。

IO
ftype(filename) -> String

ファイルのタイプを表す文字列を返します。文字列は以下のうちのいずれ かです。File.lstat(filename).ftype と同じで す。シンボリックリンクに対して "link" を返します。

grpowned?(path) -> bool

FileTest.#grpowned? と同じです。

identical?(filename1, filename2) -> bool

FileTest.#identical? と同じです。

join(*item) -> String

File::SEPARATORを間に入れて文字列を連結します。

lchmod(mode, *filename) -> Integer

File.chmod と同様ですが、シンボリックリンクに関してリンクそのものの モードを変更します。

lchown(owner, group, *filename) -> Integer

File#chown と同様ですが、 シンボリックリンクに関してリンクそのもののオーナー、 グループを変更します。

link(old, new) -> 0

old を指す new という名前のハードリンクを 生成します。old はすでに存在している必要があります。 ハードリンクに成功した場合は 0 を返します。

lstat(filename) -> File::Stat

File.statと同様ですが、シンボリックリンクに関してリンクそのものの 情報を File::Stat として返します。lstat(2) を実装していないシステムでは、File.stat と同じです。

mtime(filename) -> Time

最終更新時刻を返します。

new(path, mode = "r", perm = 0666) -> File
open(path, mode = "r", perm = 0666) -> File
open(path, mode = "r", perm = 0666) {|file| ... } -> object

path で指定されるファイルをオープンし、File オブジェクトを生成して 返します。

owned?(path) -> bool

FileTest.#owned? と同じです。

path(filename) -> String

指定されたファイル名を文字列で返します。filename が文字列でない場合は、to_path メソッドを呼びます。

pipe -> [IO]

pipe(2) を実行して、相互につながった2つの IO オブジェクトを要素とする配列を返します。

IO
pipe?(path) -> bool

FileTest.#pipe? と同じです。

popen(command, mode = "r") -> IO
popen(command, mode = "r") {|io| ... } -> object

command をサブプロセスとして実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

IO
popen("-", mode = "r") -> IO
popen("-", mode = "r") {|io| ... } -> object

第一引数に文字列 "-" が指定された時、fork(2) を 行い子プロセスの標準入出力との間にパイプラインを確立します。 親プロセスでは IO オブジェクトを返し、子プロセスでは nil を返します。

IO
read(path, length = nil, offset = 0) -> String | nil

path で指定されたファイルを offset 位置から length バイト分読み込んで返します。

IO
readable?(path) -> bool

FileTest.#readable? と同じです。

readable_real?(path) -> bool

FileTest.#readable_real? と同じです。

readlines(path, rs = $/) -> [String]

path で指定されたファイルを全て読み込んで、その各行を要素としてもつ配列を返します。

IO
readlink(path) -> String

シンボリックリンクのリンク先のパスを文字列で返します。

rename(from, to) -> 0

ファイルの名前を変更します。ディレクトリが異なる場合には移動も行い ます。rename(2) を参照してください。移動先のファ イルが存在する時には上書きされます。

select(reads, writes = [], excepts = [], timeout = nil) -> [[IO]] | nil

select(2) を実行します。 与えられた入力/出力/例外待ちの IO オブジェクトの中から準備ができたものを それぞれ配列にして、配列の配列として返します。 タイムアウトした時には nil を返します。

IO
setgid?(path) -> bool

FileTest.#setgid? と同じです。

setuid?(path) -> bool

FileTest.#setuid? と同じです。

size(path) -> Integer

FileTest.#size と同じです。

size?(path) -> bool

FileTest.#size? と同じです。

socket?(path) -> bool

FileTest.#socket? と同じです。

split(pathname) -> [String]

pathname を dirname とbasename に分割して、2 要 素の配列を返します。

stat(filename) -> File::Stat

filename の情報を含む File::Stat オブジェクトを生成し て返します。

sticky?(path) -> bool

FileTest.#sticky? と同じです。

symlink(old, new) -> 0

old への new という名前のシンボリックリンクを生成します。

symlink?(path) -> bool

FileTest.#symlink? と同じです。

sysopen(path, mode = "r", perm = 0666) -> Integer

path で指定されるファイルをオープンし、ファイル記述子を返しま す。

IO
truncate(path, length) -> 0

path で指定されたファイルのサイズを最大 length バイト にします。

umask -> Integer

現在の umask の値を返します。

umask(umask) -> Integer

umask を変更します。変更前の umask の値を返します

utime(atime, mtime, *filename) -> Integer

ファイルの最終アクセス時刻と更新時刻を変更します。変更したファイル の数を返します。変更に失敗した場合は例外 Errno::EXXX が発生 します。

world_readable?(path) -> Integer | nil

path が全てのユーザから読めるならばそのファイルのパーミッションを表す 整数を返します。そうでない場合は nil を返します。

world_writable?(path) -> bool

path が全てのユーザから書き込めるならば、そのファイルのパーミッションを表す 整数を返します。そうでない場合は nil を返します。

writable?(path) -> bool

FileTest.#writable? と同じです。

writable_real?(path) -> bool

FileTest.#writable_real? と同じです。

zero?(path) -> bool

FileTest.#zero? と同じです。

Instance Methods

signaturedescription
<<(object) -> self

object を出力します。object が文字列でない時にはメソッ ド to_s を用いて文字列に変換します。

IO
atime -> Time

最終アクセス時刻を Time オブジェクトとして返します。

binmode -> self

ストリームをバイナリモードにします。MSDOS などバイナリモードの存在 する OS でのみ有効です。そうでない場合このメソッドは何もしません。

IO
bytes -> Enumerable::Enumerator

自身を 1 バイトずつ整数としてイテレートするような Enumerable::Enumerator オブジェクトを生成して返します。

IO
chmod(mode) -> 0

ファイルのモードを指定された mode に変更します。

chown(owner, group) -> 0

ファイルのオーナーとグループを変更します。

clone -> IO
dup -> IO

レシーバと同じ IO を参照する新しい IO オブジェクトを返します。 参照しているファイル記述子は dup(2) されます。

IO
close -> nil

入出力ポートをクローズします。

IO
close_read -> nil

読み込み用の IO を close します。主にパイプや読み書き両用に作成し た IO オブジェクトで使用します。

IO
close_write -> nil

書き込み用の IO を close します。

IO
closed? -> bool

ポートがクローズされている時に真を返します。

IO
ctime -> Time

状態が最後に変更された時刻を Time オブジェクトとして返します。状態の変更とは chmod などによるものです。

each(rs = $/) {|line| ... } -> self
each_line(rs = $/) {|line| ... } -> self

IO の現在位置から 1 行ずつ文字列として読み込み、それを引数として与えられたブロックを実行します。

IO
each_byte {|ch| ... } -> self

IO の現在位置から 1 バイトずつ読み込み、それを整数として与え、ブロックを実行します。

IO
eof -> bool
eof? -> bool

ストリームがファイルの終端に達した場合、true を返します。そうでない場合、false を返します。

IO
fcntl(cmd, arg = 0) -> Integer

IOに対してシステムコール fcntl を実行します。 機能の詳細は fcntl(2) を参照してください。 fcntl(2) が返した整数を返します。

IO
fileno -> Integer
to_i -> Integer

ファイル記述子を表す整数を返します。

IO
flock(operation) -> 0 | false

ファイルをロックします。

flush -> self

IO ポートの内部バッファをフラッシュします。

IO
fsync -> 0 | nil

書き込み用の IO に対して、システムコール fsync(2) を実行します。IO#flush を行ったあと、(OSレベルで)まだディスクに 書き込まれていないメモリ上にあるデータをディスクに書き出します。

IO
getc -> Integer | nil

IO ポートから 1 文字読み込んで、その文字に対応する Fixnum を 返します。EOF に到達した時には nil を返します。

IO
gets(rs = $/) -> String | nil

一行読み込んで、読み込みに成功した時にはその文字列を返します。 EOF に到達した時には nil を返します。

IO
ioctl(cmd, arg = 0) -> Integer

IO に対してシステムコール ioctl を実行し、その結果を返します。 機能の詳細は ioctl(2) を参照してください。

IO
isatty -> bool
tty? -> bool

入出力ポートがttyに結合している時、真を返します。そうでない場合 false を返します。

IO
lineno -> Integer

現在の行番号を整数で返します。実際には IO#gets が呼ばれた回数です。 改行以外のセパレータで gets が呼ばれた場合など、実際の行番号と異なる場合があります。

IO
lineno=(number)

現在の行番号を number にセットします。 $. は次回の読み込みの時に更新されます。

IO
lines(rs = $/) -> Enumerable::Enumerator

自身を 1 行ずつイテレートするような Enumerable::Enumerator オブジェクトを生成して返します。

IO
lstat -> File::Stat

ファイルの状態を含む File::Stat オブジェクトを生成して返します。 シンボリックリンクに関してリンクそのものの情報を返します。 lstat(2) を実装していないシステムでは、IO#statと同じです。

mtime -> Time

最終更新時刻を Time オブジェクトとして返します。

path -> String

オープン時に使用したパスを文字列で返します。

pid -> Integer | nil

自身が IO.popen で作られたIOポートなら、子プロセスのプロセス ID を 返します。それ以外は nil を返します。

IO
pos -> Integer
tell -> Integer

ファイルポインタの現在の位置を整数で返します。

IO
pos=(n)

ファイルポインタを指定位置に移動します。 IO#seek(n, IO::SEEK_SET) と同じです。

IO
print(*arg) -> nil

引数を IO ポートに順に出力します。引数を省略した場合は、$_ を出力します。

IO
printf(format, *arg) -> nil

C 言語の printf と同じように、format に従い引数 を文字列に変換して、self に出力します。

IO
putc(ch) -> object

文字 ch を self に出力します。 引数の扱いは Kernel.#putc と同じです。詳細はこちらを参照し てください。ch を返します。

IO
puts(*obj) -> nil

各 obj を self に出力し、それぞれの後に改行を出力します。 引数の扱いは Kernel.#puts と同じです。詳細はこちらを参照し てください。

IO
read(length = nil, outbuf = "") -> String | nil

length バイト読み込んで、その文字列を返します。

IO
read_nonblock(maxlen, outbuf = "") -> String

IO をノンブロッキングモードに設定し、 その後で read(2) システムコールにより 長さ maxlen を上限として読み込み、文字列として返します。 EAGAIN, EINTR などは Errno::EXXX 例外として呼出元に報告されます。

IO
readchar -> Integer

IO ポートから 1 文字読み込んで、その文字に対応する Fixnum を 返します。EOF に到達した時には EOFError が発生します。

IO
readline(rs = $/) -> String

一行読み込んで、読み込みに成功した時にはその文字列を返します。 EOF に到達した時には EOFError が発生します。

IO
readlines(rs = $/) -> [String]

データを全て読み込んで、その各行を要素としてもつ配列を返します。 既に EOF に達していれば空配列 [] を返します。

IO
readpartial(maxlen, outbuf = "") -> String

IO から長さ maxlen を上限として読み込み、文字列として返します。 即座に得られるデータが存在しないときにはブロックしてデータの到着を待ちます。 即座に得られるデータが 1byte でも存在すればブロックしません。

IO
reopen(io) -> self

自身を指定された io に繋ぎ換えます。

IO
reopen(path) -> self
reopen(path, mode) -> self

path で指定されたファイルにストリームを繋ぎ換えます。

IO
rewind -> 0

ファイルポインタを先頭に移動します。IO#lineno は 0 になります。

IO
seek(offset, whence = IO::SEEK_SET) -> 0

ファイルポインタを whence の位置から offset だけ移動させます。 offset 位置への移動が成功すれば 0 を返します。

IO
stat -> File::Stat

ファイルのステータスを含む File::Stat オブジェクトを生成して 返します。

IO
sync -> bool
sync=(newstate)

現在の出力が同期モードならば true を返します。そうでない場合は false を返します。 自身を同期モードに設定すると、出力関数の呼出毎にバッファがフラッシュされます。

IO
sysread(maxlen, outbuf = "") -> String

read(2) を用いて入力を行ない、入力されたデータを 含む文字列を返します。stdio を経由しないので gets や getc や eof? などと混用すると思わぬ動作 をすることがあります。

IO
sysseek(offset, whence = IO::SEEK_SET) -> Integer

lseek(2) と同じです。IO#seek では、 IO#sysread, IO#syswrite と併用すると正しく動作しないので代わりにこのメソッドを使います。 位置 offset への移動が成功すれば移動した位置(ファイル先頭からのオフセット)を返します。

IO
syswrite(string) -> Integer

write(2) を用いて string を出力します。 string が文字列でなければ to_s による文字列化を試みます。 実際に出力できたバイト数を返します。

IO
to_io -> self

self を返します。

IO
truncate(length) -> 0

ファイルのサイズを最大 length バイトにします。

ungetc(char) -> nil

指定された char を読み戻します。2バイト以上の読み戻しは保証されません。

IO
write(str) -> Integer

IOポートに対して str を出力します。str が文字列でなけ れば to_s による文字列化を試みます。 実際に出力できたバイト数を返します。

IO
write_nonblock(string) -> Integer

IO をノンブロッキングモードに設定し、string を write(2) システムコールで書き出します。 write(2) が成功した場合、書き込んだ長さを返します。 EAGAIN, EINTR などは例外 Errno::EXXX として呼出元に報告されます。

IO

Constants

signaturedescription
ALT_SEPARATOR

システムのファイルパスのセパレータが SEPARATOR と異なる場合 に設定されます。MS-DOS などでは "\" です。UNIX や Cygwin などでは nil です。

PATH_SEPARATOR

PATH 環境変数の要素のセパレータです。UNIX では ":" MS-DOS な どでは ";" です。

SEPARATOR
Separator

ファイルパスのセパレータです。ファイルを扱うメソッドにパス名を渡す 場合などスクリプト内のパス名は環境によらずこのセパレータで統一され ます。値は "/" です。

Inherited Methods

all? any? collect detect each_cons each_slice each_with_index entries enum_cons enum_slice enum_with_index find_all grep include? inject max max_by min min_by partition reject sort sort_by zip ::APPEND ::BINARY ::CREAT ::EXCL ::FNM_CASEFOLD ::FNM_DOTMATCH ::FNM_NOESCAPE ::FNM_PATHNAME ::FNM_SYSCASE ::LOCK_EX ::LOCK_NB ::LOCK_SH ::LOCK_UN ::NOCTTY ::NONBLOCK ::RDONLY ::RDWR ::SYNC ::TRUNC ::WRONLY << binmode bytes clone close close_read close_write closed? each each_byte eof expect fcntl fileno flush fsync getc ioctl isatty lineno lineno= lines nonblock nonblock= nonblock? pid pos pos= read read_nonblock readbytes readchar readpartial ready? reopen rewind seek stat sync sysread sysseek syswrite to_io to_ptr ungetc wait write write_nonblock .for_fd .foreach .pipe .popen .read .readlines .select .sysopen ::SEEK_CUR ::SEEK_END ::SEEK_SET BigDecimal DelegateClass Digest Fail Mainloop Pathname Rational TkGrid TkPack TkPlace URI append_library arg_config check_sizeof checking_for cp create_header create_makefile dir_config egrep_cpp enable_config find_header find_library getopts have_func have_header have_library have_macro have_struct_member have_type have_var help install install_rb ln mkdir mv parseArgs pkg_config pp rm rmdir scanf timeout touch try_compile try_cpp try_link try_run try_static_assert what_type? with_config xmp y .#Array .#Float .#Integer .#String .#` .#abort .#at_exit .#autoload .#autoload? .#b64encode .#binding .#block_given? .#callcc .#caller .#catch .#decode64 .#decode_b .#encode64 .#eval .#exec .#exit .#fail .#fork .#format .#gets .#global_variables .#lambda .#load .#local_variables .#loop .#open .#p .#print .#printf .#putc .#puts .#raise .#rand .#readlines .#require .#select .#set_trace_func .#sleep .#spawn .#srand .#syscall .#system .#test .#throw .#trace_var .#trap .#untrace_var .#warn ::ARGF ::ARGV ::CFLAGS ::CONFIG ::CPP ::DATA ::ENV ::FALSE ::LINK ::NIL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE == === =~ __id__ __send__ _dump class dclone display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_eval instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump method method_missing methods nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? to_ary to_hash to_int to_proc to_regexp to_s to_splat to_str to_yaml to_yaml_properties to_yaml_style untaint

Added Methods

signaturedescriptionlibrary
catname(from, to)

If to is a valid directory, from will be appended to to, adding and escaping backslashes as necessary. Otherwise, to will be returned. Useful for appending from to to only if the filename was not specified in to.

ftools
compare(from, to[, verbose = false])
cmp(from, to[, verbose = false])

2つのファイルを比較します。 同じなら true、異なるなら false を返します。

ftools
copy(from, to[, verbose = false])
cp(from, to[, verbose = false])

ファイルをコピーします。より正確には from を読んで to に書き、モードを変更します。ファイルの更新時刻はコピーした時刻に更 新されます。

ftools
install(from, to[, mode = nil[, verbose = false]])

ファイルをコピーし、モードを設定します。 コピー先が存在する場合は一旦削除されますので、コピー先のファイルが 他のファイルにハードリンクされていれば、そのリンクは切れます。 install (install(1))コマンドに相当します。

ftools
makedirs(dirs[, ...][, verbose = false])
mkpath(dirs[, ...][, verbose = false])

(複数の)ディレクトリを作成します。多階層のパスを一度に作成することも可能です。 ディレクトリが既にあれば何もしません。 mkdir -p(mkdir(1))に相当します。

ftools
move(from, to[, verbose = false])
mv(from, to[, verbose = false])

ファイルを移動します。File.rename と異なりパーティション をまたがる移動もできます。

ftools
safe_unlink(files[, ...][, verbose = false])
rm_f(files[, ...][, verbose = false])

(複数の)ファイルを可能な限り削除します。削除できたファイルの数を 返します。rm -f(rm(1)) に相当します。

ftools
syscopy(from, to)

Copies a file from to to. If to is a directory, copies from to to/from.

ftools