File クラス
File クラスは、ファイルとディレクトリを扱う様々なメソッドを提供します。いくつかのヘルパーメソッドを通して、
あるいは、すべてのファイルとディレクトリがオブジェクトでラップされている高度なオブジェクト指向メソッドを通して
提供されます。
使用方法
File クラスの基本的な使い方は、以下のようにヘルパーメソッド経由で利用します。
exists($path, $area = null)
ファイルの存在を確認します。$path がシンボリックリンクの場合は、実体のファイルパスを解決します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
存在を確認するファイルパス |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean $path にファイルが存在する場合は true 、しない場合は false 。 |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException このエリアが使用されており、拡張子違反がある場合。
|
例 |
$exists = File::exists(DOCROOT.'/test.txt');
|
create($basepath, $name, $contents = null, $area = null)
ファイルの作成
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$basepath |
必須 |
ファイルを作成する場所 |
$name |
必須 |
新しいファイルの名前 |
$contents |
null |
ファイルの内容 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
true |
例外 |
FileAccessException ファイルがすでに存在する場合。
InvalidPathException basepath が不正か書き込み不可能な場合。
|
例 |
File::create(DOCROOT, 'test.txt', 'Contents for file.');
|
create_dir($basepath, $name, $chmod = 0777, $area = null)
ディレクトリの作成
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$basepath |
必須 |
ディレクトリを作成する場所 |
$name |
必須 |
新しいディレクトリの名前 |
$chmod |
null |
新しいディレクトリの権限 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
bool - PHP 関数の mkdir() の出力 |
例外 |
InvalidPathException basepath にすでにディレクトリが存在する場合。
FileAccessException basepath に書き込み不可能な場合。
|
例 |
File::create_dir(DOCROOT, 'test', 0755);
|
read($path, $as_string = false, $area = null)
ファイルの読み込みと内容を返す ($as_string == true) または、出力する ($as_string == false)。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
読み込むファイルの場所 |
$as_string |
false |
false の場合は readfile() を、true の場合は file_get_contents() を使用する。 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
int|string - $as_string に false がセットされている場合はバイト数を、true の場合は
内容を文字列で返す。
|
例外 |
InvalidPathException ファイルが存在しなかった場合。 |
例 |
// File::create() の例でのファイルを作成済みの場合、'Contents for file.' を返す。
$file_content = File::read(DOCROOT.'test.txt', true);
|
read_dir($path, $depth = 0, $filter = null, $area = null)
ディレクトリの内容を読み込み、配列に格納する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
読み込むディレクトリの場所 |
$depth |
0 |
サブディレクトリをどこまで下がるか: 0 は無限、1 はカレントディレクトリのみ
または、任意の数値。 |
$filter |
null |
読み込むファイルのフィルタ: array() は全てのファイル、null は
隠しファイル以外の全てのファイル。 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
array - サブディレクトリを上にし、自然順、大文字小文字を区別してソートします。ディレクトリは
キーが文字列、値が配列 ($depth 制限で読み込みできない場合は false) となり、ファイルはファイル名を値とする添字配列です。
すべてのディレクトリには、末尾にディレクトリ区切りが付加されます。 |
例外 |
InvalidPathException ディレクトリではない場合。
FileAccessException ディレクトリが読み取り不可能な場合。
|
例 |
// ディレクトリの読み込み
$contents = File::read_dir(DOCROOT);
// 深さ制限のある読み込み
$contents = File::read_dir(DOCROOT, 2);
// カスタムルールを使った読み込み
$contents = File::read_dir(DOCROOT, 0, array(
'!^\.', // 隠しファイル/ディレクトリを除く
'!^private' => 'dir', // private ディレクトリを除く
'\.png$' => 'file', // png ファイルのみ
'\.css$' => 'file', // または css ファイル
'!^_', // アンダースコアで始まるすべてを除外。
));
/**
* 上で見たように、
* "=> 'file'" や "=> 'dir'" を追加することで
* ディレクトリやファイルを特定したルールを
* 作成することができます。
*/
|
update($basepath, $name, $contents = null, $area = null)
ファイルを更新する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$basepath |
必須 |
更新するファイルの場所 |
$name |
必須 |
ファイル名。存在しない場合は作成されます。 |
$contents |
null |
ファイルに書き込む内容 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
true |
例外 |
InvalidPathException basepath がディレクトリではないか、書き込み不可能な場合。
FileAccessException 書き込み権限がない場合。
|
例 |
File::update(DOCROOT, 'test.txt', 'New contents for file.');
|
append($basepath, $name, $contents = null, $area = null)
存在するファイルに追記する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$basepath |
必須 |
追記するファイルの場所 |
$name |
必須 |
ファイル名。このファイルは存在している必要があります。 |
$contents |
null |
ファイルに追記する内容 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
true |
例外 |
InvalidPathException basepath がディレクトリではないか、書き込み不可能な場合。
FileAccessException ファイルが存在しない場合。
|
例 |
File::append(DOCROOT, 'test.txt', 'Additional contents for file.');
|
rename($path, $new_path, $source_area = null, $target_area = null)
ファイルまたはディレクトリをリネームまたは移動する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
リネームするファイルまたはディレクトリ |
$new_path |
必須 |
新しいファイル名またはディレクトリ名 |
$source_area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
$target_area |
null |
$source_area に $new_path が含まれていない場合のオプションの Area オブジェクトに利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean rename() の結果 |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていないファイルタイプの場合。
|
例 |
// 'test.txt' を 'newname.txt' にリネームし、サブディレクトリに移動する
File::rename(DOCROOT.'test.txt', DOCROOT.'folder/newname.txt');
// 1 つのエリアを使いリネームする
File::rename(DOCROOT.'one.jpg', DOCROOT.'final.jpg', 'docroot');
// 2 つの制限エリアの間で移動しリネームする
File::rename(APPPATH.'tmp/file.jpg', DOCROOT.'folder/image.jpg', 'tmp', 'public');
|
rename_dir($path, $new_path, $source_area = null, $target_area = null)
File::rename のエイリアス
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
リネームするファイルまたはディレクトリの場所 |
$new_path |
必須 |
新しいファイル名またはディレクトリ名 |
$source_area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
$target_area |
null |
$source_area に $new_path が含まれていない場合のオプションの Area オブジェクトに利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean rename() の結果 |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていないファイルタイプの場合。
|
例 |
File::rename(DOCROOT.'/dirname', DOCROOT.'/newdirname');
|
copy($path, $new_path, $area = null, $source_area = null, $target_area = null)
ファイルのコピー。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
コピー元のファイルの場所 |
$new_path |
必須 |
ファイル名を含んだコピー先のフルパス |
$source_area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
$target_area |
null |
$source_area に $new_path が含まれていない場合のオプションの Area オブジェクトに利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean copy() の結果 |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていないファイルタイプの場合。
InvalidPathException コピー元のパスにファイルが存在しない場合。
FileAccessException コピー先にすでにファイルが存在する場合。
|
例 |
// ファイル 'test.txt' を docroot からサブディレクトリにコピー
File::copy(DOCROOT.'test.txt', DOCROOT.'folder/test.txt');
// 1 つのエリアを使ったコピー
File::copy(DOCROOT.'one.jpg', DOCROOT.'img/one.jpg', 'public');
// 2 つの制限エリア間でのコピー
File::copy(APPPATH.'tmp/1.jpg', DOCROOT.'folder/1.jpg', 'tmp', 'public');
|
copy_dir($path, $new_path, $area = null, $source_area = null, $target_area = null)
ディレクトリのコピー。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
コピー元のディレクトリの場所 |
$new_path |
必須 |
コピー先のパス |
$source_area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
$target_area |
null |
$source_area に $new_path が含まれていない場合のオプションの Area オブジェクトに利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
null |
例外 |
OutsideAreaException パスがエリア内になかった場合。
InvalidPathException コピー元がディレクトリではない場合。
FileAccessException コピー先にすでにディレクトリが存在する場合。
|
例 |
File::copy_dir(DOCROOT.'/test', DOCROOT.'/newname');
|
delete($path, $area = null)
ファイルの削除
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
削除するファイルの場所 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean unlink() の結果 |
例外 |
OutsideAreaException パスがエリア内になかった場合。
InvalidPathException コピー元がファイルでない場合。
|
例 |
File::delete(DOCROOT.'/test.txt');
|
delete_dir($path, $recursive = true, $delete_top = true, $area = null)
ディレクトリの削除
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
削除するディレクトリの場所 |
$recursive |
true |
サブディレクトリの内容も削除する |
$delete_top |
true |
親ディレクトリが空になる場合、親ディレクトリも削除する |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean unlink() の結果、または、サブディレクトリの内容を削除しなかった場合は true |
例外 |
OutsideAreaException パスがエリア内になかった場合。
InvalidPathException ソースパスがディレクトリではない場合。
FileAccessException 削除中に異常が発生した場合。
|
例 |
File::delete_dir(DOCROOT.'/my_dir');
|
open_file($path, $lock = true, $area = null)
ファイルを開き、そしてロックする。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
開くファイルの場所 |
$lock |
true |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
ファイルのリソース |
例外 |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file could not be locked.
FileAccessException when an invalid $lock value is passed.
|
例 |
$resource = File::open_file(DOCROOT.'/my_dir/text.txt');
|
Please note that the $lock value is ignored if file locking is disabled in the base config (which is the default!).
close_file($resource, $area = null)
ファイルを閉じ、ロックを解除する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$resource |
必須 |
開いたファイルのリソース |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
boolean ロックが使用されている場合 |
例 |
$resource = File::open_file(DOCROOT.'/my_dir/text.txt');
// リソースに何かする
File::close_file($resource);
|
get($path, $config = array(), $area = null)
ファイルのハンドラを取得する。ハンドラについての詳細
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ハンドラでラップするファイルまたはディレクトリ |
$config |
array() |
オプションの配列 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
新しいファイルのハンドラオブジェクト |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていない拡張子の場合。
|
例 |
$handler = File::get(DOCROOT.'/my_dir/text.txt');
|
get_url($path, $config = array(), $area = null)
ファイルの公開 URL を取得する。URL は基本コンフィグまたは使用するエリアコンフィグにセットされている必要があります。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ファイルのパス |
$config |
array() |
オプションの配列 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
ファイルの公開 URL |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていない拡張子の場合。
|
例 |
$url = File::get_url(DOCROOT.'/my_dir/text.txt');
// http://mydomain.com/mydir/text.txt のようなものを返す
|
get_permissions($path, $area = null)
ファイルまたはディレクトリの 8 進数形式のパーミッションを取得する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ファイルのパス |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
8進数形式のパーミッション |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていない拡張子の場合。
|
例 |
$permissions = File::get_permissions(DOCROOT.'/my_dir/text.txt');
// "0755" を返す
|
get_time($path, $type = 'modified', $area = null)
ファイルまたはディレクトリの作成/更新日時を取得する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ファイルのパス |
$type |
'modified' |
取得するタイプ。modified または created を指定。 |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
UNIX Timestamp 形式のファイルの作成/更新日時 |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていない拡張子の場合。
|
例 |
$permissions = File::get_time(DOCROOT.'/my_dir/text.txt', 'created');
|
get_size($path, $area = null)
バイト数でファイルサイズを取得する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ファイルのパス |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
バイト数でのファイルサイズ |
例外 |
OutsideAreaException パスがエリア内になかった場合。
FileAccessException 許可されていない拡張子の場合。
InvalidPathException ファイルが存在しない場合。
|
例 |
$filesize = File::get_size(DOCROOT.'/my_dir/text.txt');
|
file_info($path, $area = null)
ファイルの情報を配列として取得する。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ファイルのパス |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
|
返り値 |
ファイル情報から成る配列。配列には、パス、ファイル名、拡張子情報、
ファイルサイズ、パーミッション、作成日時、更新日時、検出された mime-type 、
ファイルの文字セットが含まれる。
|
例外 |
InvalidPathException ファイルが存在しない場合。
InvalidArgumentException ファイルが決定できない場合。
|
例 |
$filesize = File::file_info(DOCROOT.'/my_dir/text.txt');
|
download($path, $name = null, $mime = null, $area = null, $delete = false, $disposition = 'attachment')
インラインまたはダウンロード添付としてファイルを出力する
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
ファイルのパス |
$name |
null |
元のファイル名を上書きするファイル名 |
$mime |
null |
元の MimeType を上書きする MimeType |
$area |
null |
Area オブジェクトで利用、設定ファイルの base_config を利用する場合は null
(詳細については高度な使用法を参照) |
$delete |
false |
ダウンロード後に削除するかどうか |
$disposition |
'attachment' |
ダウンロードかインライン出力か。 'attachment' か 'inline' が許可され、デフォルトは 'attachment' 。 |
|
返り値 |
n/a - このメソッドはダウンロード処理を起動すると終了する。 |
例外 |
InvalidPathException ファイルが存在しない場合。
InvalidArgumentException ファイル情報が取得できない場合。
FileAccessException ファイルが開けないか読みこむことが出来ない場合。
|
例 |
// ファイルのダウンロード
File::download(DOCROOT.'/my_dir/text.txt', 'newfile.txt');
// <img> タグソースのためのインラインイメージの出力
File::download(DOCROOT.'/img/image.jpg', null, 'image/jpeg', null, false, 'inline');
|
このメソッドを呼び出すとき、即座にダウンロードしませんのでご注意ください。ファイルがダウンロードされ、スクリプトを終了するシャットダウンイベントを準備します。
これにより、セッション更新などの FuelPHP の全てのシャットダウン関数を、
正常に実行できます。