My Photo

« PHPメモ021:ファイル関連の関数 その2 | Main | U-23 ロンドン五輪出場決定 #daihyo »

March 13, 2012

PHPメモ022:ファイル関連の関数 その3

resource fopen(<ファイル名>, <モード>[, <インクルードパス>[, <ストリームコンテキスト>]])
ファイルをオープンする。modeはアクセス形式(読み込み用、書き込み用など)指定する。インクルードパスは 1 または TRUE を指定すると include_path のファイルの検索も行う。
戻り値はファイルハンドル。エラー時にはFALSE。

mode は下表のいずれかになる。

mode 説明
r 読み込み用でオープンする。ファイルポインタをファイルの先頭に置く。
r+ 読み込み/書き出し用にオープンする。ファイルポインタをファイルの先頭に置く。
w 書き出しのみでオープンする。ファイルポインタをファイルの先頭に置き、ファイルサイズをゼロにする。ファイルがない場合は作成を試みる。
w+ 読み込み/書き出し用にオープンする。ファイルポインタをファイルの先頭に置き、ファイルサイズをゼロにする。ファイルがない場合は作成を試みる。
a 書き出しのみでオープンする。ファイルポインタをファイルの終端に置く。ファイルがない場合は作成を試みる。
a+ 読み込み/書き出し用でオープンする。ファイルポインタをファイルの終端に置く。ファイルがない場合は作成を試みる。
x 書き出しのみでオープンする。ファイルポインタをファイルの先頭に置く。ファイルが既に存在する場合は fopen() は失敗する。ファイルが存在しない場合は作成を試みる。
x+ 読み込み/書き出し用でオープンする。それ以外の振る舞いは'x'と同じ。
c 書き出しのみでオープンする。ファイルが存在しないは作成を試みる。ファイルが既に存在する場合でも 'w' のように切り詰めたり、'x' のように関数コールに失敗することもない。
c+ 読み込み/書き出し用でオープンする。それ以外の振る舞いは'c'と同じ。

'+' が付いているのは読み込み/書き出しの両方ができる。
'w' と 'a' と 'c' はファイルが既に存在すればそれを開くし、なければ作る。
'x' は新規作成用でファイルが既に存在するとエラーになる。

Windows環境では上表のモードの後に改行の変換モードを指定する 't' または 'b' を指定できる。デフォルトでは 'b'(バイナリモード)。

mode 説明
t '\n' を '\r\n' に変換する。
b バイナリモード。変換はしない。

bool fclose(<ファイルハンドル>)
ファイルをクローズする。

string fgets(<ファイルハンドル>[, <長さ>])
ファイルから1行読み込む。長さを指定した場合は改行に達する前でもlength-1バイト読んだ時点で終了する。

array fgetcsv(<ファイルハンドル>[, <長さ>[, <区切り文字>[, <囲い込み文字>[, <エスケープ文字>]]])
ファイルから1行読み込み、CSVフィールドとして処理をしてフィールドの配列を返す。

fputs(<ファイルハンドル>, <文字列>[, <長さ>])
fwrite(<ファイルハンドル>, <文字列>[, <長さ>])
文字列をファイルに書き込む。長さが指定された場合は文字列の終わりに達する前でも長さ分書き込んだ時点で終了する。
戻り値は書き込んだバイト数。エラーの場合はFALSE。

fputcsv(<ファイルハンドル>, <配列>[, <区切り文字>[, <囲い込み文字>]])
配列をCSVフォーマットでファイルに書き込む。

string serialize(<配列またはオブジェクト>)
値を方や構造を失わずに保存可能なバイトストリーム表現を含む文字列を生成する。

mixed unserialize(<文字列>)
シリアル化された変数をPHP変数値に変換する。

bool fflush(<ファイルハンドル>)
バッファリングされた出力をファイルに書き込む。

bool feof(<ファイルハンドル>)
ファイルポインタがファイルの終端に達しているかを調べる。

int fseek(<ファイルハンドル>, <オフセット>[, <シーク基準>])
ファイルポインタをオフセットで指定したバイト数移動する。移動の向きはオフセットが正の値なら末尾の方向、負の値なら先頭の方向。シーク基準はどの位置からオフセット分移動するかを指定する。SEEK_SET は先頭から、SEEK_CUR は現在の位置から、 SEE_END は末尾から。
戻り値は成功ならば 0、それ以外は -1。

ファイルを1行ごとに読み込むサンプルーコード
if ($fh = fopen('sample.txt', 'r')) {
	while (FALSE !== ($buffer = fgets($fh))) {
		echo $buffer;
	}
	fclose($fh);
}
シリアライズのサンプルーコード
if ($fh = fopen('serialize.txt', 'w')) {
	$a = array('Demon小暮', 'Ace清水', 'Luke篁');
	fputs($fh, serialize($a) . "\r\n");
	fflush($fh);
	fclose($fh);
}

if ($fh = fopen('serialize.txt', 'r')) {
	while (FALSE !== ($buffer = fgets($fh))) {
		$b = unserialize($buffer);
		print_r($b);
	}
	fclose($fh);
}

« PHPメモ021:ファイル関連の関数 その2 | Main | U-23 ロンドン五輪出場決定 #daihyo »

PHP」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54214821

Listed below are links to weblogs that reference PHPメモ022:ファイル関連の関数 その3:

« PHPメモ021:ファイル関連の関数 その2 | Main | U-23 ロンドン五輪出場決定 #daihyo »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof