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 の全てのシャットダウン関数を、 正常に実行できます。