このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0075

ファイルヘルパー

 ファイルヘルパーは「 system/helper/file_helper.php 」ファイルで、ファイルの読み込みや書き込み、
ファイル情報を取得する関数が定義されています。

ファイルヘルパーのロード

 「 CI_Loader 」クラスの「 helper() 」メソッドでロードします。

    $this->load->helper('file');

ファイルヘルパーの関数

read_file($file)

 ファイルを読み込み、ファイルの内容データを返します。
 指定したファイルが存在しないか、読み込に失敗するとFALSEを返します。

 指定するファイルパスは、ドキュメントルートからの相対パスか、絶対パスとなります。

    $this->load->helper('file');

    $this->output->set_output( read_file('../lisence.txt') );

write_file($path, $data, $mode = FOPEN_WRITE_CREATE_DESTRUCTIVE)

 第二引数で指定したデータを、第一引数で指定するファイルに書き込みます。
 第三引数は、アクセスモードを指定します。デフォルトはバイナリ上書きモード (FOPEN_WRITE_CREATE_DESTRUCTIVE)です。

 追記モードで書き込む場合は「FOPEN_WRITE_CREATE」を第三引数に指定します。

 CodeIgniter独自に定義されているアクセスモードの定数は、「application/config/constants.php」
定数定義ファイルを参照してください。

    $this->load->helper('file');

    $text = read_file('../lisence.txt');
    if ( write_file('../data/foo.txt', $text) )
    {
        // 書込み成功
    }

delete_files($path, $del_dir = FALSE)

 第一引数で指定したディレクトリパス配下のファイルを全て削除します。
 第二引数にTRUEを指定すると、指定したディレクトリ配下のサブディレクトリも 再帰的に全て削除します。

 「.(ドット)」で始まるファイル名の隠しファイルは削除されますが、「.(ドット)」で始まるディレクトリ名の 隠しディレクトリは削除されません。

    ../data/garbage/
                |- .secret.txt
                |- hoge.txt
                |- .hidden/
                |       |- foo.txt
                |
                |- subdir/
                |       |- bar.txt
    
    if ( delete_files('../data/garbage') )
    {
        // 削除しました。
    }
    ../data/garbage/
                |- .hidden/
                |       |- foo.txt
                |
                |- subdir/
                |       |- bar.txt
    
    if ( delete_files('../data/garbage', TRUE) )
    {
        // 削除しました。
    }
    ../data/garbage/
                |- .hidden/
                |       |- foo.txt
    

get_filenames($source_dir, $include_path = FALSE)

 第一引数で指定されたディレクトリ配下の全てのファイルのファイル名一覧を配列で返します。
 ファイル一覧にディレクトリは含まれません。

 第二引数にTRUEを指定すると、ファイル名には絶対パスのパス文字列が付加されます。

 ディレクトリツリーの情報を取得するには「ディレクトリヘルパー」の 「directory_map()」関数を利用します。

    $this->load->helper('file');

    $filenames = get_filenames('.');
    print_r($filenames);
    /*
    Array
    (
        [0] => main.js
        [1] => logo.gif
        [2] => header.gif
        [3] => footer.gif
        [4] => favicon.ico
        [5] => index.php
        [6] => layout.css
        [7] => design.css
    )
    */


    $filenames = get_filenames('.', TRUE);
    print_r($filenames);
    /*
    Array
    (
        [0] => /var/www/vhosts/myapp/htdocs/js/main.js
        [1] => /var/www/vhosts/myapp/htdocs/images/logo.gif
        [2] => /var/www/vhosts/myapp/htdocs/images/header.gif
        [3] => /var/www/vhosts/myapp/htdocs/images/footer.gif
        [4] => /var/www/vhosts/myapp/htdocs/favicon.ico
        [5] => /var/www/vhosts/myapp/htdocs/index.php
        [6] => /var/www/vhosts/myapp/htdocs/css/layout.css
        [7] => /var/www/vhosts/myapp/htdocs/css/design.css
    )
    */

get_dir_file_info($source_dir, $top_level_only = TRUE) 一番上に戻る

 第一引数で指定されたディレクトリ配下のファイル、及び、ディレクトリのファイル情報を連想配列で返します。
 デフォルトでは、指定したディレクトリ直下のファイルとディレクトリのみのが対象ですが、 第二引数にFALSEを指定するとサブディレクトリ配下の全てのファイルとディレクトリが 対象となります。

 ファイル情報には、以下のものが含まれます。

添え字 説明
name ファイル名、または、ディレクトリ名
server_path ファイル、または、ディレクトリの絶対パス
size ファイルサイズ(Byte)
date ファイル更新時間(Unixタイムスタンプ)
    $this->load->helper('file');

    $files_info = get_dir_file_info('.');
    print_r($files_info);
    /*
    Array
    (
        [js] => Array
            (
                [name] => js
                [server_path] => /var/www/vhosts/myapp/htdocs/js
                [size] => 4096
                [date] => 1337433489
            )
        [favicon.ico] => Array
            (
                [name] => favicon.ico
                [server_path] => /var/www/vhosts/myapp/htdocs/favicon.ico
                [size] => 318
                [date] => 1337433489
            )
        [index.php] => Array
            (
                [name] => index.php
                [server_path] => /var/www/vhosts/myapp/htdocs/index.php
                [size] => 1901
                [date] => 1338481071
            )
        [images] => Array
            (
                [name] => images
                [server_path] => /var/www/vhosts/myapp/htdocs/images
                [size] => 4096
                [date] => 1338888073
            )
        [css] => Array
            (
                [name] => css
                [server_path] => /var/www/vhosts/myapp/htdocs/css
                [size] => 4096
                [date] => 1337526641
            )
    )
    
    */

get_file_info($file, $returned_values = array('name', 'server_path', 'size', 'date'))

 特定のファイル、または、ディレクトリのファイル情報を取得します。

 第二引数に、取得したい情報を配列で指定します。
取得できる情報は以下のものになります。

添え字 説明
name ファイル名、または、ディレクトリ名
server_path ファイル、または、ディレクトリの絶対パス
size ファイルサイズ(Byte)
date ファイル更新時間(Unixタイムスタンプ)
readable 読み込み可能かTRUEFALSEで返します。
writable 書き込み可能かTRUEFALSEで返します。
executable 実行可能かTRUEFALSEで返します。
fileperms ファイルパーミッションを10進数で返します。
    $this->load->helper('file');

    $file_info = get_file_info('./index.php', array('name', 'size', 'fileperms'));
    print_r($file_info);
    /*
    Array
    (
        [name] => index.php
        [size] => 1901
        [fileperms] => 33204
    )
    
    */

get_mime_by_extension($file) 一番上に戻る

 ファイル名の拡張子から「application/config/mimes.php」マイムタイプ定義ファイルで定義されている マイムタイプ文字列を取得し返します。

    $this->load->helper('file');

    $mime_type = get_mime_by_extension('./index.php');
    echo $mime_type;
    // application/x-httpd-php

symbolic_permissions($perms)

 10進数のファイルパーミッションから、パーミッション文字列に変換して返します。

    $this->load->helper('file');

    $file_info = get_file_info('./index.php', array('fileperms'));
    $perms = symbolic_permissions($file_info['fileperms']);
    echo $perms;
    // -rw-r--r--

octal_permissions($perms) 一番上に戻る

 10進数のファイルパーミッションから、8進数表記のファイルパーミッションに変換して返します。

    $this->load->helper('file');

    $file_info = get_file_info('./index.php', array('fileperms'));
    $perms = octal_permissions($file_info['fileperms']);
    echo $perms;
    // 644