PHPでウェブの世界と繋がろう!
menu
ホーム > PHPサンプル > ファイル系 > ファイル作成と書込み読込み一式

ファイル作成と書込み読込み一式

Pocket

サンプルコード sample code
ファイル作成と書き込み読み込み
ファイルを作成・書き込み・読み込み・閉じるまでの一連の流れ

  • file_exists()ファイル存在を確認(同じファイルが存在しているかどうか)
  • touch()ファイルを作成
  • chmod()ファイルのモード(パーミッション)の変更
  • fopen()ファイルをオープン
  • flock()ファイルのロック
  • fwrite()ファイルへ書き込み
  • flock()ファイルのアンロック
  • is_readable()ファイルの存在を確認、読み込み可能かチェック
  • file_get_contents()ファイルの読み込み
  • fclose()ファイルを閉じる
  • ファイルの作成/書き込み/読み込み/ の成功

file_exists()
論理値 = file_exists(ファイルかディレクトリへのパス);

ファイルまたはディレクトリが存在するかどうか調べます。指定したファイルやディレクトリが存在する場合は、TRUE を返します。そうでなければ、 FALSE を返します。

POINT

  • この関数は セーフモード の制限のためファイルにアクセスできない場合 FALSE を返す
  • 失敗したときは E_WARNING が発生する

touch()
論理値 = touch(ファイルパス);

ファイルが存在しない場合はファイルが生成されます。成功した場合に TRUE を、失敗した場合に FALSE を返します。

chmod()
論理値 = chmod(ファイルパス, モードの指定);
//0644 所有者に読み込み、書き込みの権限を与え、その他には読み込みだけ許可する。
//0755 所有者に全ての権限を与え、その他には読み込みと実行を許可する。

ファイルのモードを変更します。成功した場合に TRUE を、失敗した場合に FALSE を返します。

fopen()
リソース = fopen(ファイルパス, モードの指定);

ファイルやURLをオープンする。エラー時に FALSE を返します。

flock()
論理値 = flock(リソース, オペレーションの指定);

ファイルやURLをオープンする。成功した場合に TRUE を、失敗した場合に FALSE を返します。

オペレーション
 共有ロック(読み手)とするには LOCK_SH をセットします。
 排他的ロック(書き手)とするには LOCK_EX をセットします。
 (共有または排他的)ロックを開放するには LOCK_UN をセットします。

fwrite()
書き込んだバイト数 = fwrite(リソース, 書き込む文字列);

バイナリセーフなファイル書き込み処理を行います。エラー時に FALSE を返します。

is_readable()
論理値 = is_readable(ファイルパス);

ファイルの存在を確認し、ファイルが読み込み可能か調べます。読み込み可能であれば TRUE を、それ以外の場合は FALSE を返します。

file_get_contents()
読み込んだデータ = file_get_contents(読み込むファイルパス);
指定したファイルを読み込み内容を取得します。失敗した場合に FALSE を返します。
POINT

  • 空白のような特殊な文字を有する URI をオープンする場合には、 urlencode() でその URI をエンコードする必要がある

fclose()
論理値 = fclose(リソース);

オープンされたファイルポインタ(リソース)をクローズします。成功した場合に TRUE を、失敗した場合に FALSE を返します。

サンプルコード

以下をご自分の環境に合わせて書き換えて下さい。

$sPath = '/●●●●●サーバーディレクトリパス●●●●●/'.$sFileName;

– サンプル Click Here ! –

<h3>ファイル作成と書き込み読み込み</h3>
<?php
//ファイル名
$sFileName =         date('YmdHis').'.txt';
//ファイルパス
$sPath =             '/●●●●●サーバーディレクトリパス●●●●●/'.$sFileName;
//書き込む内容
$sWriteContents =    "1行目1項目目\t1行目2項目目\t1行目3項目目\n";
$sWriteContents .=   "2行目1項目目\t2行目2項目目\t2行目3項目目\n";
$sWriteContents .=   "3行目1項目目\t3行目2項目目\t3行目3項目目";

//ファイルの存在確認
if(file_exists($sPath)){
    echo '・指定ファイルが既に存在しております。';
    exit;
}else{
    echo '・ファイルの存在確認完了。<br/>';
}

//ファイルを作成
if(touch($sPath)){
    echo '・ファイル作成完了。<br/>';
}else{
    echo '・ファイル作成失敗。<br/>';
    exit;
}

//ファイルのパーティションの変更
if(chmod($sPath,0644)){
    echo '・ファイルパーミッション変更完了。<br/>';
}else{
    echo '・ファイルパーミッション変更失敗。<br/>';
    exit;
}

//ファイルをオープン
if($filepoint = fopen($sPath,"w")){
    echo '・ファイルオープン完了。<br/>';
}else{
    echo '・ファイルオープン失敗。<br/>';
    exit;
}

//ファイルのロック
if(flock($filepoint, LOCK_EX)){
    echo '・ファイルロック完了。<br/>';
}else{
    echo '・ファイルロック失敗。<br/>';
    exit;
}

//ファイルへ書き込み
if(fwrite($filepoint,$sWriteContents)){
    echo '・ファイル書き込み完了。<br/>';
}else{
    echo '・ファイル書き込み失敗。<br/>';
    exit;
}

//ファイルのアンロック
if(flock($filepoint, LOCK_UN)){
    echo '・ファイルアンロック完了。<br/>';
}else{
    echo '・ファイルアンロック失敗。<br/>';
    exit;
}

//ファイルを読み込む
if(is_readable($sPath)){

    //ファイル内容を変数に格納
    $vContents = file_get_contents($sPath);
    echo '・ファイル ['.$sFileName.'] 読み込み完了。<br/>';

    //ファイル内容を配列に変換 行を取得
    $aCcontents = explode("\n", $vContents);

    //読み込み内容を展開
    echo '<table border="1">';
    foreach($aCcontents as $aContentsRecords){
        echo '<tr>';
        $aContentsFields = explode("\t", $aContentsRecords);
        //ファイル内容を配列に変換 列を取得
        foreach($aContentsFields as $data){
            echo "<td>{$data}</td>";
        }
        echo '</tr>';
    }
    echo '</table>';

}else{
    echo '・ファイル ['.$sFileName.'] 読み込み失敗。<br/>';
    exit;
}

//ファイルを閉じる
if(fclose($filepoint)){
    echo '・ファイルクローズ完了。<br/>';
}else{
    echo '・ファイルクローズ失敗。<br/>';
    exit;
}
?>
実行結果
ファイル作成と書き込み読み込み
・ファイルの存在確認完了。
・ファイル作成完了。
・ファイルパーミッション変更完了。
・ファイルオープン完了。
・ファイルロック完了。
・ファイル書き込み完了。
・ファイルアンロック完了。
ファイル [20131206011317.txt] を読み込みました。

1行目1項目目 1行目2項目目 1行目3項目目
2行目1項目目 2行目2項目目 2行目3項目目
3行目1項目目 3行目2項目目 3行目3項目目

・ファイルクローズ完了。

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2012年3月2日
最終更新日:2014年02月20日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpsample-file-create/trackback/