ファイル


ファイルかどうか調べる(is_file)(設定ファイルなどは対象外)

is_file(filename)を使用します。ファイルが存在し、かつ隠しファイルやiniファイルなどではない場合trueを返します。

$filename = "file_puts_test.txt";
$result = is_file($filename);

ディレクトリかどうか調べる(is_dir)

is_dir(filename)を使用します。ディレクトリが存在し、かつそれがディレクトリの場合trueを返します。

$filename = "file_puts_test.txt";
$result = is_dir($filename);

ファイル、ディレクトリが存在するか調べる(file_exists)

file_exists(filename)を使用します。

$filename = "file_puts_test.txt";
$result = file_exists($filename);

ファイルが書き込み可能か(読み込み専用でないか)調べる(is_writable)

is_writable(filename)を使用します。ファイルが存在し、かつそれが書き込める場合trueを返します。

$filename = "file_puts_test.txt";
$result = is_writable($filename);

パターンにマッチするファイル名を列挙する(glob)

glob(pattern)を使用します。

$path = "../php/*";
$names = glob($path);

特定の拡張子だけ列挙したい場合は*.phpのように拡張子もつけます。

$path = "../php/*.php";
$names = glob($path);

ディレクトリの中に対してもファイル名を列挙させたい場合は/*/*のように*を重ねます。

$path = "../../*/*/*";
$names = glob($path);

ファイル名を返す(basename)

basename(filename, suffix)を使用します。suffixを指定すると拡張子なども消すことができます。

$filename = "../php/file_puts_test.txt";
echo basename($filename) . "\n";    // => file_puts_test.txt
echo basename($filename, '.txt') . "\n";    // => file_puts_test

ディレクトリ名を返す(dirname)

dirname(filename)を使用します。

$filename = "../php/file_puts_test.txt";
echo dirname($filename) . "\n";    // => ../php

リネームする(移動する)(rename)

rename(old_name, new_name)を使用します。戻り値には成否を返します。

$old_name = "../php/file_puts_test.txt";
$new_name = "../php/file_test.txt";
$result = rename($old_name, $new_name);

最終アクセス(参照)時刻を取得する(fileatime)

fileatime(filename)を使用します。unix時間で返されます。

$filename = "../php/file_puts_test.txt";
if(file_exists($filename)){
    $time = fileatime($filename);    // => 1456173592
    echo date('Y-m-d H:i:s', $time) . "\n";    // => 2016-02-23 05:39:52
}

ファイルの最終更新時刻を取得する(filemtime)

filemtime(filename)を使用します。unix時間で返されます。

$filename = "../php/file_puts_test.txt";
if(file_exists($filename)){
    $time = filemtime($filename);    // => 1456173851
    echo date('Y-m-d H:i:s', $time) . "\n";    // => 2016-02-23 05:44:11
}

ファイルの所有者やグループ、パーミッション、ファイルの長さなどの更新時刻を取得する(filectime)

filectime(filename)を使用します。unix時間で返されます。

$filename = "../php/file_puts_test.txt";
if(file_exists($filename)){
    $time = filectime($filename);    // => 1456173851
    echo date('Y-m-d H:i:s', $time) . "\n";    // => 2016-02-23 05:44:11
}

1回だけファイルに書き込む(file_put_contents)

file_put_contents(filename, data, mode_flag)を使用します。
1つの関数でファイルの開く、書き込む、閉じる操作を行うので1度だけ書き込みたい場合に重宝します。
デフォルトでは上書きされてしまいますが、第3引数に FILE_APPEND を指定すると追加されます。
また LOCK_EX を指定すると排他ロックされます。

$filename = "file_puts_test.txt";
$data = "abcdefg";
file_put_contents($filename, $data);

$mode = FILE_APPEND | LOCK_EX; // 書き込みを追加、排他ロックする
$data2 = "hijklmn";
file_put_contents($filename, $data2, $mode);


1回だけファイルから読み込む(file_get_contents)

file_get_contents(filename)を使用します。
1つの関数でファイルの開く、読み込む、閉じる操作を行うので1度だけ読み込みたい場合に重宝します。

$filename = "file_puts_test.txt";
$data = file_get_contents($filename);
echo $data . "\n";

ディレクトリを作成する(mkdir)

mkdir(filename)を使用します。戻り値に成否を返します

$filename = "./php";
$result = mkdir($filename);

unlink(filename)を使用します。戻り値に成否を返します

$filename = "file_puts_test.txt";
$result = unlink($filename);

ディレクトリを削除する(rmdir)

rmdir(filename)を使用します。戻り値に成否を返します

$filename = "./php";
$result = rmdir($filename);

ファイルをコピーする(copy)

copy(src_name, dst_name)を使用します。戻り値に成否を返します

$src_name = "file_puts_test.txt";
$dst_name = "file_puts_test2.txt";
$result = copy($src_name, $dst_name);