Folder と File ユーティリティは、ファイルの読み書きやフォルダ内のファイル名一覧の取得、その他ディレクトリに関連するタスクにおいて便利なクラスです。
App::uses() を使ってクラスをロードします。
App::uses('Folder', 'Utility');
App::uses('File', 'Utility');
すると、新しいフォルダインスタンスをセットアップすることができるようになります。
$dir = new Folder('/path/to/folder');
インスタンスを作成したフォルダ内から .ctp の拡張子が付いたファイルを正規表現検索する場合はこのようにします。
$files = $dir->find('.*\.ctp');
これでファイルの読み込みや、コンテンツの書き込み、ファイルの削除などが行えるようになります。
foreach ($files as $file) {
$file = new File($dir->pwd() . DS . $file);
$contents = $file->read();
// $file->write('このファイルの内容を上書きします');
// $file->append('このファイルの最後に追記します。');
// $file->delete(); // このファイルを削除します
$file->close(); // 終了時にファイルをクローズしましょう
}
// 0755 のパーミッションで新しいフォルダを作成します
$dir = new Folder('/path/to/folder', true, 0755);
フォルダの現在のパス。 Folder::pwd() でも同じ情報を返します。
ファイルリストを取得する際に、名前によるソートを実行するか否かの値。
フォルダ作成時のモード。デフォルトでは 0755 。 Windows マシンでは何も影響しません。
戻り値の型: | string |
---|
$path と $element の間に適切なスラッシュを加えて返します。
$path = Folder::addPathElement('/a/path/for', 'testing');
// $path は /a/path/for/testing となります
戻り値の型: | string |
---|
カレントディレクトリを $path へ移動します。失敗時には false が返ります
$folder = new Folder('/foo');
echo $folder->path; // /foo が表示されます
$folder->cd('/bar');
echo $folder->path; // /bar が表示されます
$false = $folder->cd('/non-existent-folder');
戻り値の型: | boolean |
---|
ディレクトリのモード(パーミッション)を再帰的に変更します。ファイルのモードも同様に変更します。
$dir = new Folder();
$dir->chmod('/path/to/folder', 0755, true, array('skip_me.php'));
戻り値の型: | boolean |
---|
ディレクトリを再帰的にコピーします。唯一のパラメータである $options にはコピー先のパスか、オプションの配列を指定します。
$folder1 = new Folder('/path/to/folder1');
$folder1->copy('/path/to/folder2');
// Will put folder1 and all its contents into folder2
$folder = new Folder('/path/to/folder');
$folder->copy(array(
'to' => '/path/to/new/folder',
'from' => '/path/to/copy/from', // will cause a cd() to occur
'mode' => 0755,
'skip' => array('skip-me.php', '.git')
));
$folder1 = new Folder('/path/to/folder1');
$folder1->copy('/path/to/folder2');
// folder1 以下のファイルを folder2 へコピーします
$folder = new Folder('/path/to/folder');
$folder->copy(array(
'to' => '/path/to/new/folder',
'from' => '/path/to/copy/from', // cd() が実行されるでしょう
'mode' => 0755,
'skip' => array('skip-me.php', '.git')
));
戻り値の型: | string |
---|
$path に与えるべき適切なスラッシュを返します。 (Windows 環境では \ で、その他の環境では / )
戻り値の型: | boolean |
---|
ディレクトリを作成します。 /foo/bar/baz/shoe/horn のような深い階層の作成も可能です。
$folder = new Folder();
if ($folder->create('foo' . DS . 'bar' . DS . 'baz' . DS . 'shoe' . DS . 'horn')) {
// フォルダ作成に成功した場合の処理
}
戻り値の型: | boolean |
---|
システムが許可していた場合、再帰的にディレクトリを削除します。
$folder = new Folder('foo');
if ($folder->delete()) {
// フォルダの削除が成功した場合の処理
}
戻り値の型: | integer |
---|
フォルダとその中身のサイズを返します。
戻り値の型: | array |
---|
最新のエラーを返します。
戻り値の型: | array |
---|
現在のディレクトリで指定のパターンにマッチしたファイルを配列で返します。
// app/webroot/img/ フォルダ内の .png を検索し、ソートして返す
$dir = new Folder(WWW_ROOT . 'img');
$files = $dir->find('.*\.png', true);
/*
Array
(
[0] => cake.icon.png
[1] => test-error-icon.png
[2] => test-fail-icon.png
[3] => test-pass-icon.png
[4] => test-skip-icon.png
)
*/
ノート
find メソッドと findRecursive メソッドは、ファイルのみを検索します。 フォルダとファイルを取得したい場合は、 Folder::read() もしくは Folder::tree() 参照してください。
戻り値の型: | array |
---|
パターンにマッチした全てのファイルをカレントディレクトリを付けて返します。
// test もしくは index で始まるファイルを再帰的に検索する
$dir = new Folder(WWW_ROOT);
$files = $dir->findRecursive('(test|index).*');
/*
Array
(
[0] => /var/www/cake/app/webroot/index.php
[1] => /var/www/cake/app/webroot/test.php
[2] => /var/www/cake/app/webroot/img/test-skip-icon.png
[3] => /var/www/cake/app/webroot/img/test-fail-icon.png
[4] => /var/www/cake/app/webroot/img/test-error-icon.png
[5] => /var/www/cake/app/webroot/img/test-pass-icon.png
)
*/
戻り値の型: | boolean |
---|
ファイルが CakePath の中に存在すれば true を返します。
戻り値の型: | boolean 指定されたファイルが与えられたパスの中に存在すれば true を返します。 $Folder = new Folder(WWW_ROOT);
$result = $Folder->inPath(APP);
// $result = true, /var/www/example/app/ は /var/www/example/app/webroot/ に含まれる
$result = $Folder->inPath(WWW_ROOT . 'img' . DS, true);
// $result = true, /var/www/example/app/webroot/ は /var/www/example/app/webroot/img/ に含まれる
|
---|
戻り値の型: | boolean |
---|
引数の $path が絶対パスであれば true を返します。
戻り値の型: | boolean |
---|
引数の $path がスラッシュで終了していれば true を返します。 (つまり、 slash-terminated)
$result = Folder::isSlashTerm('/my/test/path');
// $result = false
$result = Folder::isSlashTerm('/my/test/path/');
// $result = true
戻り値の型: | boolean |
---|
引数の $path が Windows のパスであれば true を返します。
戻り値の型: | array |
---|
直近で利用したメソッドのメッセージを取得します。
戻り値の型: | boolean |
---|
再帰的なディレクトリの移動。
戻り値の型: | string |
---|
引数の $path を適切なスラッシュに調整して返します。 (Windows 環境では \ で、その他の環境では / )
戻り値の型: | string |
---|
現在のパスを返します。
戻り値の型: | mixed |
---|---|
パラメタ: |
|
現在のディレクトリのコンテンツを配列で返します。 戻り値は2つの配列となります。1つはディレクトリ名の配列。もう1つはファイル名の配列です。
$dir = new Folder(WWW_ROOT);
$files = $dir->read(true, array('files', 'index.php'));
/*
Array
(
[0] => Array
(
[0] => css
[1] => img
[2] => js
)
[1] => Array
(
[0] => .htaccess
[1] => favicon.ico
[2] => test.php
)
)
*/
戻り値の型: | string |
---|
引数のパス内にある ”..” の名前を解決したパスを返します。
戻り値の型: | string |
---|
引数の $path に終端のスラッシュを付けたパスを返します。 (Windows 環境では \ で、その他の環境では / )
戻り値の型: | mixed |
---|
ディレクトリ一覧とその中のファイル一覧を返します。
// 0644 のパーミッションで新しいファイルを作成します
$file = new File('/path/to/file.php', true, 0644);
ファイルが属するフォルダ・オブジェクト
拡張子付きのファイル名。 似たような動作をする File::name() では、拡張子無しのファイル名を返します。
ファイル情報の配列。このプロパティよりも File::info() を使ってください。
ファイルをオープンしている場合のファイルハンドラを保持します。
ファイルの読み書き時のロックを有効にします。
現在のファイルの絶対パス。
戻り値の型: | boolean |
---|
引数の文字列をファイルへ追記します。
戻り値の型: | boolean |
---|
ファイルがオープンされていた場合、そのファイルをクローズします
戻り値の型: | boolean |
---|
ファイルを $dest へコピーします。
戻り値の型: | boolean |
---|
ファイルを作成します。
戻り値の型: | boolean |
---|
ファイルを削除します。
戻り値の型: | boolean |
---|
ファイルに実行権限が付いていた場合に true を返します。
戻り値の型: | boolean |
---|
ファイルが存在した場合に true を返します。
戻り値の型: | string |
---|
ファイルの拡張子を返します。
戻り値の型: | Folder |
---|
現在のフォルダを返します。
戻り値の型: | integer |
---|
ファイルのグループを返します。
戻り値の型: | string |
---|
ファイル情報を返します。
バージョン 2.1 で変更: File::info() ファイルサイズと MIME タイプの情報が含まれるようになりました。
戻り値の型: | integer |
---|
最新のアクセス時間を返します。
戻り値の型: | integer |
---|
最新の更新時間を返します。
戻り値の型: | string |
---|
ファイルサイズを事前にチェックした上で、ファイルの md5 チェックサムを返します。(訳注:$maxsizeの単位はMB)
戻り値の型: | string |
---|
拡張子を省いたファイル名を返します。
戻り値の型: | mixed |
---|
現在オープンしているファイルのオフセット値を設定または取得します。
戻り値の型: | boolean |
---|
現在のファイルを引数の $mode でオープンします。
戻り値の型: | integer |
---|
ファイルのオーナーを返します。
戻り値の型: | string |
---|
ファイルのパーミッションを返します。
戻り値の型: | string |
---|
ASCII 文字列をファイルへ書き出す事前処理を行います。現在の実行環境に合わせて改行文字を変換します。Windows なら”\r\n”を、その他の環境なら”\n”が利用されます。
戻り値の型: | string |
---|
ファイルのフルパスを返します。
戻り値の型: | mixed |
---|
ファイルの内容を文字列で返します。失敗時は false を返します。
戻り値の型: | boolean |
---|
ファイルが読み出し可能な場合に true を返します。
戻り値の型: | string |
---|
安全にセーブするために、ファイル名を変換します。(訳注:ホワイトスペース、ドット、ハイフンをアンダーバーへ変換)
戻り値の型: | integer |
---|
ファイルサイズを返します。
戻り値の型: | boolean |
---|
ファイルが書き込み可能な場合に true を返します。
戻り値の型: | boolean |
---|
引数のデータをファイルへ書き込みます。
バージョン 2.1 で追加: File::mime()
戻り値の型: | mixed |
---|
ファイルのMIMEタイプを返します。失敗時には false を返します。