この章では、サーバ上のファイルの open、read、close の方法について説明します。
ファイル・オープンには fopen() 関数を使うことがベターです。この関数は、readfile()関数よりも多くのオプションがあります。
レッスン内では、テキストファイル "webdictionary.txt" を使用します:
AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language
fopen()の最初のパラメータは、オープンするファイル名を指定し、2番目のパラメータにはファイルを開くモードを指定します。 次の例では、fopen()関数が指定されたファイルを開くことができない場合には、メッセージの生成も行います:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>
例の実行 »
チップ: fread()関数とfclose()関数については下で説明します。
ファイルは次のいずれかのモードで開くことができます:
モード | 説明 |
---|---|
r | ファイルを読み取り専用で開きます。ファイルポインタをファイルの先頭に置きます |
w | 書き出し専用でオープンします。ファイルの内容を消去するか、ファイルが存在しない場合は新しいファイルを作成します。 ファイルポインタをファイルの先頭に置きます |
a | 書き出し専用でオープンします。ファイル内の既存データを維持します。 ファイルポインタをファイルの終端に置きます。 ファイルが存在しない場合は新しいファイルを作成します |
x | 書き出し専用の新しいファイルを作成します。ファイルが既に存在する場合はFALSEを返し、エラーになります |
r+ | 読み込み/書き出し用でオープンします。ファイルポインタをファイルの先頭に置きます |
w+ | 読み込み/書き出し用でオープンします。ファイルの内容を消去するか、ファイルが存在しない場合は新しいファイルを作成します。 ファイルポインタをファイルの先頭に置きます |
a+ | 読み込み/書き出し用でオープンします。ファイル内の既存データを維持します。ファイルポインタをファイルの終端に置きます。 ファイルが存在しない場合は新しいファイルを作成します |
x+ | >読み込み/書き出し用の新しいファイルを作成します。ファイルが既に存在する場合はFALSEを返し、エラーになります |
fread() 関数は、オープン済みのファイルから読み込みます。
fread() の最初のパラメータは、読み込むファイルの名前で、2番目のパラメータは読み込む最大バイト数を指定します。
次のPHPコードは "webdictionary.txt"ファイルを最後まで読み込みます:
fread($myfile,filesize("webdictionary.txt"));
fclose() 関数は、オープンしたファイルを閉じるために使用します。
読込みが終了した後は、すべてのファイルを閉じることをお勧めします。サーバ上のファイルをオープンし続けてリソースを消費させないためです!
fclose() には、閉じたいファイル名(またはファイル名を格納している変数)が必須です:
<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>
fgets() 関数は、ファイルから1行づつ読み込むために使用します。
次の例は、 "webdictionary.txt"ファイルの最初の行を出力します:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
例の実行 »
注: fgets()関数を呼び出した後、ファイルポインタは次の行に移動します。
feof() 関数は、"ファイルの終端"(EOF)に達したかどうかをチェックします。
feof() 関数は、長さが不明なデータをループするのに便利です。
下の例は、ファイルの終端に達するまで、"webdictionary.txt"ファイルを1行づつ 読み込みます:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
例の実行 »
fgetc() 関数は、ファイルから1文字づつ読み込むために使用します。
下の例は、ファイルの終端に達するまで、"webdictionary.txt"ファイルを1文字づつ読み込みます:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
例の実行 »
注:fgetc() 関数を呼び出した後、ファイルポインタは次の文字に移動します。
ファイルシステム関数の完全なリファレンスは、完全な PHP ファイルシステム・リファレンスをご覧ください。