1stPHP

ファイル・ディレクトリ関数

ファイル読み込み

読み込み(一行)

$handle = fopen ("sample.txt", "r");
flock ($handle, LOCK_SH);
while (!feof ($handle)) {
  $str = fgets($handle, 10240);
  print $str;
}
flock ($handle, LOCK_UN);
fclose ($handle);

読み込み(全体)

$ary = file ("sample.txt");
foreach ($ary as $str) {
  print $str;
}

ファイル書き込み

$handle = fopen ("sample.txt", "w");
flock ($handle, LOCK_EX);
fputs ($handle, $str);
flock ($handle, LOCK_UN);
fclose ($handle);

ファイルのオープン・クローズ・ロック

fopen ファイルまたはURLをオープンする

ファイルハンドル = fopen (パス , "モード")

$handle = fopen ("./sample.txt", "w");
$handle = fopen ("http://www.yahoo.co.jp/", "r");

モード

mode説明ファイルポインタの位置ファイルが無い場合補足
r読みこみファイルの先頭
r+読みこみ・書きこみファイルの先頭
w書きこみファイルの先頭作成ファイルサイズをゼロにします
w+読みこみ・書きこみファイルの先頭作成ファイルサイズをゼロにします
a書きこみファイルの終端作成
a+読みこみ・書きこみファイルの終端作成

fclose オープンされたファイルポインタをクローズする

bool fclose( ファイルハンドル )

成功した場合に TRUE 、失敗した場合に FALSE を返します。

fclose($handle);

flock 汎用のファイルロックを行う

bool flock ( resource handle, int operation [, int &wouldblock])

成功した場合に TRUE 、失敗した場合に FALSE を返します。

説明
flock($handle,LOCK_SH)共有ロック(読み)
flock($handle,LOCK_EX)排他的ロック(書き)
flock($handle,LOCK_UN)ロック開放

ファイルポインタ

feof ファイルポインタがファイル終端に達しているかどうか調べる

bool feof ( resource handle)

ファイルポインタがEOFに達しているかまたはエラーの場合に TRUE 、その他の場合に FALSE を返します。

rewind ファイルポインタの位置を先頭に戻す

bool rewind ( resource handle)

成功した場合に TRUE 、失敗した場合に FALSE を返します。

fseek ファイルポインタを移動する

int ftell ( resource handle)

成功すると0を返し、そうでなければ-1を返します。

ftell ファイルポインタから読み書きの位置を取得する

int fseek ( resource handle, int offset [, int whence])

成功するとファイルポインタの位置を返し、エラーが起こった場合 FALSE を返します。

ファイル読み込み

file ファイル全体を読み込んで配列に格納する

array file ( string filename [, int use_include_path [, resource context]])

成功すると配列で(改行記号はついたまま)返します。失敗すると FALSE を返します。

$ary1 = file ("./sample.txt");
//HTTPを通してURL上のHTMLソースも可
$ary2 = file ("http://www.sample.com/");

fgets ファイルポインタから1行取得する

string fgets ( resource handle [, int length])

ファイルポインタから最大length-1バイト読み出し(length省略時は1024バイト)返します。エラーの場合 FALSE を返します。

$str = fgets($handle, 1024);

ファイル書き込み

fwrite ファイル書き込み

(fputsはfwriteのエイリアス)

int fwrite ( resource handle, string string [, int length])

書き込んだバイト数を返します。エラーの場合は FALSE を返します。

fwrite($handle, $str);

ファイル操作

copy ファイルをコピーする

int copy ( コピー元ファイルパス , コピー先ファイルパス )

成功した場合に TRUE 、失敗した場合に FALSE を返します。(コピー先のファイルが既に存在する場合、上書きされます。 )

copy("sample.txt", "./backup/sample.txt");

rename ファイルをリネームする

int rename ( 変更元ファイルパス , 変更先ファイルパス )

成功した場合に TRUE 、失敗した場合に FALSE を返します。(変更先のファイルが既に存在する場合、エラーになります。 )

rename("sample.txt", "./backup/sample.txt");

unlink ファイルを削除する

bool unlink ( ファイルパス )

成功した場合に TRUE 、失敗した場合に FALSE を返します。

unlink ("sample.txt");

mkdir ディレクトリを作る

bool mkdir ( ファイルパス [, モード])

成功した場合に TRUE 、失敗した場合に FALSE を返します。モードを8進数で指定する必要があります。

mkdir ("./dirname", 0777);

rmdir ディレクトリを削除する

bool rmdir ( ファイルパス )

成功した場合に TRUE 、失敗した場合に FALSE を返します。ディレクトリは空である必要があります。

rmdir("./dirname");

chmod ファイルのモードを変更する

int chmod ( ファイルパス , モード)

成功した場合に TRUE 、失敗した場合に FALSE を返します。モードを8進数で指定する必要があります。

chmod ("./sample/sample.txt", 0777);

ファイル情報

file_exists ファイルまたはディレクトリが存在するかどうか調べる

bool file_exists ( ファイル名 )

存在した場合に TRUE 、それ以外に FALSE を返します。

if (file_exists($filename)) {
  print $filename."は存在します。";
} else {
  print $filename."は存在しません。";
}

pathinfo ファイルパスに関する情報を返す

dirname(ディレクトリ名)、basename(ファイル名)、extension(拡張子)の連想配列を返します。

$filename = "/data/sample.txt";
print_r( pathinfo($filename));

結果

Array ( [dirname] => /data [basename] => sample.txt [extension] => txt )

fileatime ファイルの最終アクセス時間を取得する

時間はUNIXタイムスタンプとして返されます。

print "最終アクセス日時 ".date("Y年m月d日 H時i分s秒", filemtime($filename));

filemtime ファイルの最終更新時間を取得する

時間はUNIXタイムスタンプとして返されます。

print "最終更新日時 ".date("Y年m月d日 H時i分s秒", filemtime($filename));

filesize ファイルのサイズを取得する

print "ファイルサイズ ".filesize($filename);

ファイルを調べる

ファイルが存在し、条件にあてはまると TRUE を返し、それ以外は FALSE を返します。

説明
is_file($file)通常ファイルかどうか
is_dir($file)ファイルがディレクトリかどうか
is_readable($file)ファイルが読み込み可能かどうか
is_writable($file)ファイルが書き込み可能かどうか
is_writeable($file)is_writable()のエイリアス
is_uploaded_file($file)HTTP POSTによりアップロードされたファイルかどうか

ディレクトリ関数

chdir カレントディレクトリを変更

bool chdir (ディレクトリパス)

成功した場合に TRUE 、失敗した場合に FALSE を返します。

chdir ("/sample/dir");

getcwd カレントディレクトリを取得

カレントディレクトリを返します。

print "カレントディレクトリ ".getcwd ();

ディレクトリハンドル

カレントディレクトリにある全ファイルの表示

$dir = getcwd();
if (is_dir($dir)) {
  if ($handle = opendir($dir)) {
    while (($file = readdir($handle)) !== false) {
      print $file."<br />";
    }
    closedir($handle);
  }
}