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 応用実地編資料