1X.5 ファイルシステム
1X.5.1 ファイル操作(基本)
| 構文 | 説明 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
resource fopen ( string filename, string mode [,int use_include_path [,resource zcontext]] ) |
filename で指定されたリソースをオープンします。 filename にはローカルのファイル名またはURLが指定できます。 URLをオープンするには php.ini の allow_url_fopen が有効になっている必要があります。 fopen() はオープンが失敗すると FALSE を返し、E_WARNING レベルのエラーを発行します。 @ を使ってこの warning を抑制することもできます。 modeには以下のものが指定できます。
modeに続けてフラグを指定する事ができます。 Windows上では、\n と \r\n を透過的に変換する テキストモード変換フラグ('t')が提供されてます。 それに対し、'b' を使って強制的にバイナリモードにすることもできます。 その場合データの変換はされません。 これらのフラグを使用するには、'b' または 't'を mode 引数の最後に追加します。 バイナリモードでファイルをオープンする場合は常に 'b' フラグを使用する事が推奨されています。 引数 use_include_path に 1(またはTRUE) を設定することにより、 include_path からファイル検索を行うこともできます。 用例:いろいろなオープン
$handle = fopen ("/home/rasmus/file.txt", "r");
$handle = fopen ("/home/rasmus/file.gif", "wb");
$handle = fopen ("http://www.y2sunlight.com/", "r");
用例:戻り値の処理
($handle=@fopen ($file, "rt")) Or die("Open Error: $file");
|
||||||||||||||||||
bool fclose ( resource handle ) |
handle で指定されたファイルをクローズします。 成功した場合に TRUE を、失敗した場合に FALSE を返します。 ※ fgets() の用例を参照。 |
||||||||||||||||||
bool feof ( resource handle ) |
handle で指定されたファイルポインタが EOF に達しているかまたはエラーの場合に TRUE 、 その他の場合に FALSE を返します。 ※ fgets() の用例を参照。 |
||||||||||||||||||
string fgets ( resource handle [,int length] ) |
handle で指定されたファイルポインタから最大 length - 1 バイト読み出し、その文字列を返します。 エラーが起こった場合、FALSE を返します。 読み出しは、以下のいずれかになると終了します:
length が省略された場合、PHP 4.2.0 では 1024バイト が仮定されますが、 PHP4.3 以降では、行の終わりに達するまでストリームを読み続けます。 用例:
$file = "test/file.txt";
($handle=@fopen ($file, "rt")) Or die("Open Error: $file");
while (!feof($handle)) {
// Windowsに於いて't'で開くとfgets()は\r\nを\nに変換する
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
|
||||||||||||||||||
string fread ( resource handle, int length ) |
handle で指定されたファイルポインタから最大 length バイト 読み込みます。 エラーが起こった場合、FALSE を返します。 読み出しは、以下のいずれかになると終了します:
(Windowsのように)バイナリとテキストファイルの形式が異なるシステ ムにおいては、 ファイルをオープンする際に fopen()の mode パラメータに 'b' (または't')を指定する必要があります。 また、文字列にファイルを読み込みたいだけならば、file_get_contents() を使う事もできます。 ネットワークストリームの場合、指定 length の如何に関わらす途中でデータが切れる可能性があります。 従って、以下の用例のように分割されたデータを結合する必要があります。 用例:
$handle = fopen("http://www.y2sunlight.com/", "rb");
$contents = '';
while (!feof($handle)) $contents .= fread($handle, 8192);
fclose($handle);
|
||||||||||||||||||
int fwrite ( resource handle, string string [,int length] ) |
string の内容を handle で指定されたファイル・ストリームに書き込みます。 書き込んだバイト数、またはエラー時に FALSE を返します。 書き込みは、以下のいずれかになると終了します:
(Windowsのように)バイナリとテキストファイルの形式が異なるシステ ムにおいては、 ファイルをオープンする際に fopen() の mode パラメータに 'b' (または't')を指定する必要があります。 用例:
$file = "test/file.txt";
$text = "Hello World.\n";
if (is_writable($file)) { // ファイルの確認
($handle = @fopen($file, 'a')) Or die("Open Error: $file");
// Windowsに於いて't'で開くと\nを\r\nに変換(出力)する
(@fwrite($handle, $text)) Or die("Write Error: $file");
fclose($handle);
}
|
||||||||||||||||||
bool fflush ( resource handle ) |
バッファリングされている出力をリソースに強制的に書き込みます。 成功した場合に TRUE を、失敗した場合に FALSE を返します。 |
||||||||||||||||||
bool flock ( resource handle, int operation [,int &wouldblock] ) |
handleに結合しているファイルに対して operation で指定されたロック操作を行います。 operation は、次の値を取ります。 flock() は成功した場合に TRUE を、失敗した場合に FALSE を返します。
ロックはファイルをクローズすると自動解除されるので、ほとんどの場合、明示的な LOCK_UN は必要ありません。 用例:
flock($handle,LOCK_EX) Or die(); // ブロック
for( $i=0; !flock($handle,LOCK_EX+LOCK_NB); $i++){ // 非ブロック
if ($i>3) die();
sleep(1);
}
|
||||||||||||||||||
array fstat ( resource handle ) |
handleに結合しているファイルのステータス情報を含む配列を返します。 この配列のフォーマットは stat() 関数と同じです。 stat() は、ファイル名を指定してステータス情報を取得します。 |
| 添字 | キー | 内容 |
|---|---|---|
| 0 | dev | デバイス番号 |
| 1 | ino | inode の番号 |
| 2 | mode | inode のプロテクトモード |
| 3 | nlink | リンク数 |
| 4 | uid | 所有者のユーザID |
| 5 | gid | 所有者のグループID |
| 6 | rdev | inode デバイス の場合、デバイスの種類 (※1) |
| 7 | size | バイト単位のサイズ |
| 8 | atime | 最終アクセス時間 (Unix タイムスタンプ) |
| 9 | mtime | 最終修正時間 (Unix タイムスタンプ) |
| 10 | ctime | 最終INODE変更時間 (Unix タイムスタンプ) |
| 11 | blksize | ファイル IO のブロックサイズ (※1) |
| 12 | blocks | ブロックの確保数 |
- 最終修正時間
- mtime はファイルの内容が変更された時間です。ファイルの更新日時を取得するには、この値にdate()関数を適用します。
