ファイルの処理、読み込み、書き込みなど
作成:2006-04-20、更新:2008-12-08
ファイルの処理、読み込み、書き込みなど。
ファイルの存在、ファイルがあるかないか
if(file_exists($filename)){
}
ファイルサイズ
$fsize = filesize($filename);
行末の改行コードを削除、空白文字を取り除く
・\r、\n、\t、空白、\0などを取り除く
$data = chop($data);
Perlのchopではなくchompに近い
ファイルを開く、ファイルを閉じる
・ファイルを開く
fopen(ファイルのパス, オプション);
・オプション
r:読み込み
w:書き込み
a:追加書き込み
r+:読み込みおよび書き込み
w+:書き込みおよび読み込み
a+:追加書き込みおよび読み込み
t:テキストモード
b:バイナリモード
w,w+,a,a+は、ファイルが存在しない場合はファイルを自動的に作成する
・bやtは、rやwと併用する
fopen(ファイルのパス, br);
・例
$fpid = fopen($filename, "r");
flock($fpid, LOCK_EX);
while($rows = fgets($fpid)){
$row = explode("\t", chop($rows));
$category_num = $row[0];
}
flock($fpid, LOCK_UN);
fclose($fpid);
ファイルを読み込む
file()を使ってファイルを読み込むと、ファイル内の各行が配列に入っている。
$filepath = './test.dat';
$filedata = file($filepath);
print_r($filedata);
1行目:$filedata[0]
2行目:$filedata[1]
というようになる。
読み込むだけならfopen()より便利。
ファイルのロック、アンロック
・ロック
flock($fpid, LOCK_EX);
・アンロック
flock($fpid, LOCK_UN);
ファイルをコピー
copy(元のファイルパス, コピー先のファイルパス);
copy($filename_tmp, $filename);
ファイル名を変更
rename(変更前のファイルパス, 変更後のファイルパス);
rename($filename_tmp, $filename);
ファイルを削除
unlink(ファイルパス);
unlink($filename);
画像出力
$filename = "sample.jpg";
header("Content-type: image/jpeg");
header("Content-Length: " . filesize($filename));
$fp = fopen($filename, "rb") or die();
print fread($fp, filesize($filename));
fclose($fp);