SAK 図書館
PHP 基礎編3 - 標準ファイル I/O fopen、unlink、flock、file、opendir、readdir
■fopen (ファイルオープン)
$fno = fopen("path/filename", 'r');
| | |_ r 読み取り専用
| | r+ 入出力
| | w 書き込み専用
| | w+ 入出力(上書き)
| | a 追加出力
| | a+ 入出力(追加出力)
| |_ ファイル名
|_ ファイルハンドル
Flase = エラー
■fclose (ファイルクローズ)
fclose($fno);
|_ ファイルハンドル
・オープンされていないファイルハンドルをクローズしようとするとエラーが
発生するので注意。
■unlink (ファイル削除)
$rcd = unlink("path/filename");
| |_ ファイル名
|_ True = 正常
False = エラー
■file_exists (ファイル存在確認)
$rcd = file_exists("path/filename");
| |_ ファイル名
|_ True = 存在する
False = 存在しない
■filesize (ファイルサイズ)
$size = filesize("path/filename");
| |_ ファイル名
|_ バイト数
■filemtime (タイムスタンプ)
$time = filemtime("path/filename");
| |_ ファイル名
|_ UNIX タイムスタンプ
$dttm = date('Y.m.d H:i:s', filemtime("path/filename"));
| |_ 書式
|_ '2002.06.01 15:00:00'
■copy (ファイルコピー)
$rcd = copy("path/filename", "path2/filename2");
| | |_ コピー先ファイル名
| |_ コピー元ファイル名
|_ True = 正常
False = エラー
■rename (ファイル名変更)
$rcd = rename("path/filename", "path2/filename2");
| | |_ 新ファイル名
| |_ 旧ファイル名
|_ True = 正常
False = エラー
■flock (ファイルロック、排他制御)
flock($fno, 2);
| |_ 1 読み込み用共有ロック (PHP4 では、LOCK_SH 定数あり)
| 2 書き込み用排他ロック (PHP4 では、LOCK_EX 定数あり)
| 3 ロック解除 (PHP4 では、LOCK_UN 定数あり)
|_ ファイルハンドル
set_file_buffer($fno, 0);
|_ ファイルロックを使用する場合、
fwrite のバッファリングを 0 指定する方が
誤動作を防げる。
■テキストストリーム I/O サンプル
【例1】入力
if (!($fno = fopen("test.txt", 'r'))) {
die;
}
while (!feof($fno)) {
$rec = fgets($fno, 32000);
}
fclose($fno);
【例2】入力
$rec = file("test.txt");
reset($rec);
while ($a = each($rec)) {
print "<P>$a[0] - $a[1]</P>\n";
}
【例3】入力 (foreach は、PHP4 でのみ使用可能)
$rec = file("test.txt");
foreach ($rec as $a) {
print "<P>$a</P>\n";
}
【例4】出力
if (!($fno = fopen("test.txt", 'w'))) {
die;
}
fwrite($fno, "aaaaa\n", 32000);
fwrite($fno, "bbbbb\n", 32000);
fclose($fno);
■opendir (ディレクトリオープン)
$dir = opendir("path");
| |_ ディレクトリ
|_ ファイルハンドル
Flase = エラー
■closedir (ディレクトリクローズ)
closedir($dir);
|_ ファイルハンドル
■ディレクトリ参照サンプル
【例】
if (!($dir = opendir("./"))) {
die;
}
while ($fnm = readdir($dir)) {
print "<P>$fnm</P>\n";
}
closedir($dir);
** 『.』と『..』も含まれるで注意。
【例】指定拡張子だけを取得
if (!($dir = opendir("./"))) {
die;
}
while ($fnm = readdir($dir)) {
if (ereg('.php$', $fnm)) {
print "<P>$fnm</P>\n";
}
}
closedir($dir);
【例】昇順
if (!($dir = opendir("./"))) {
die;
}
while ($fnm[] = readdir($dir));
closedir($dir);
sort($fnm);
reset($fnm);
while ($a = each($fnm)) {
print "<P>$a[1]</P>\n";
}
** 『.』と『..』も含まれるで注意。
【例】降順
if (!($dir = opendir("./"))) {
die;
}
while ($fnm[] = readdir($dir));
closedir($dir);
rsort($fnm);
reset($fnm);
while ($a = each($fnm)) {
print "<P>$a[1]</P>\n";
}
** 『.』と『..』も含まれるで注意。
■PHP 基礎編資料
■PHP + MySQL 編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料