【PHP】これで分かる関数! – ファイル操作その3 –

PHP

更新履歴

更新日更新者更新内容
2021/8/24JJI・サンプルプログラムの実行結果に画面の画像を追加

はじめに

この記事で載せているサンプルプログラムは次の記事で紹介する関数を使用している場合があります。

ファイルの書き込み

ファイルの書き込みでは次の関数を使用したサンプルプログラムを紹介します。

  1. fopen()関数で新規作成したファイルにfwrite()関数で書き込む
  2. fopen()関数で開いたファイルをfwrite()関数で更新する

1はサンプルプログラム1、2、2はサンプルプログラム3、4を見てください。

サンプルプログラム1

新規作成のファイルに書き込むサンプルプログラムその1です。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";
    require_once __DIR__ . "./lib/sample_file.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】ファイルの書き込み・新規作成<br>\n";

    // 各モードでファイルの新規作成
    $filename = "data/write/write01.txt";
    write_file_data($filename, "w");
    output_file($filename);

    $filename = "data/write/write02.txt";
    write_file_data($filename, "w+");
    output_file($filename);

    $filename = "data/write/write03.txt";
    write_file_data($filename, "a");
    output_file($filename);

    $filename = "data/write/write04.txt";
    write_file_data($filename, "a+");
    output_file($filename);

    // コード中に作成したファイルの削除
    for($i = 1; $i < 21; $i++) {
        $filename = "data/write/write" . sprintf("%02d", $i) . ".txt";
        if(file_exists($filename)) {
            unlink($filename);
        }
    }
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_08_06_01.php<br>
【PHP】ファイルの書き込み・新規作成<br>
wモードでdata/write/write01.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
w+モードでdata/write/write02.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
aモードでdata/write/write03.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
a+モードでdata/write/write04.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>

サンプルプログラム2

新規作成のファイルに書き込むサンプルプログラムその2です。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";
    require_once __DIR__ . "./lib/sample_file.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】ファイルの書き込み・新規作成<br>\n";

    // 各モードでファイルの新規作成
    $filename = "data/write/write05.txt";
    write_file_data($filename, "x");
    output_file($filename);

    $filename = "data/write/write06.txt";
    write_file_data($filename, "x+");
    output_file($filename);

    $filename = "data/write/write07.txt";
    write_file_data($filename, "c");
    output_file($filename);

    $filename = "data/write/write08.txt";
    write_file_data($filename, "c+");
    output_file($filename);

    // コード中に作成したファイルの削除
    for($i = 1; $i < 21; $i++) {
        $filename = "data/write/write" . sprintf("%02d", $i) . ".txt";
        if(file_exists($filename)) {
            unlink($filename);
        }
    }
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_08_06_02.php<br>
【PHP】ファイルの書き込み・新規作成<br>
xモードでdata/write/write05.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
x+モードでdata/write/write06.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
cモードでdata/write/write07.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
c+モードでdata/write/write08.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>

サンプルプログラム3

ファイルを更新するサンプルプログラムその1です。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";
    require_once __DIR__ . "./lib/sample_file.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】ファイルの書き込み・更新<br>\n";

    // ファイルコピー
    $org_filename = "data/write/orignal.txt";
    copy($org_filename, "data/write/write11.txt");
    copy($org_filename, "data/write/write12.txt");
    copy($org_filename, "data/write/write13.txt");

    // 元ファイルの表示
    output_file($org_filename);

    // ファイルの更新
    // r+の場合、ファイルの上書き
    $filename = "data/write/write11.txt";
    write_file_data($filename, "r+");
    output_file($filename);

    // wの場合、ファイルの上書き
    $filename = "data/write/write12.txt";
    write_file_data($filename, "w");
    output_file($filename);

    // w+の場合、ファイルの上書き
    $filename = "data/write/write13.txt";
    write_file_data($filename, "w+");
    output_file($filename);

    // コード中に作成したファイルの削除
    for($i = 1; $i < 21; $i++) {
        $filename = "data/write/write" . sprintf("%02d", $i) . ".txt";
        if(file_exists($filename)) {
            unlink($filename);
        }
    }
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_08_07_01.php<br>
【PHP】ファイルの書き込み・更新<br>
ハローワールド
<br>
hello world<br>
r+モードでdata/write/write11.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
wモードでdata/write/write12.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
w+モードでdata/write/write13.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>

サンプルプログラム4

ファイルを更新するサンプルプログラムその2です。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";
    require_once __DIR__ . "./lib/sample_file.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】ファイルの書き込み・更新<br>\n";

    // ファイルコピー
    $org_filename = "data/write/orignal.txt";
    copy($org_filename, "data/write/write14.txt");
    copy($org_filename, "data/write/write15.txt");
    copy($org_filename, "data/write/write16.txt");
    copy($org_filename, "data/write/write17.txt");

    // 元ファイルの表示
    output_file($org_filename);

    // ファイルの更新
    // aの場合、ファイルの追記
    $filename = "data/write/write14.txt";
    write_file_data($filename, "a");
    output_file($filename);

    // a+の場合、ファイルの追記
    $filename = "data/write/write15.txt";
    write_file_data($filename, "a+");
    output_file($filename);

    // xモードの場合、エラーとなる
    // $filename = "data/write/write16.txt";
    // write_file_data($filename, "x");
    // output_file($filename);

    // x+モードの場合、エラーとなる
    // $filename = "data/write/write17.txt";
    // write_file_data($filename, "x+");
    // output_file($filename);

    // cの場合、ファイルの追記
    $filename = "data/write/write18.txt";
    write_file_data($filename, "c");
    output_file($filename);

    // c+の場合、ファイルの追記
    $filename = "data/write/write19.txt";
    write_file_data($filename, "c+");
    output_file($filename);

    // コード中に作成したファイルの削除
    for($i = 1; $i < 21; $i++) {
        $filename = "data/write/write" . sprintf("%02d", $i) . ".txt";
        if(file_exists($filename)) {
            unlink($filename);
        }
    }
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_08_07_02.php<br>
【PHP】ファイルの書き込み・更新<br>
ハローワールド
<br>
hello world<br>
aモードでdata/write/write14.txtの書き込み<br>
ハローワールド
<br>
hello worldハローワールド2<br>
hello world2<br>
<br>
a+モードでdata/write/write15.txtの書き込み<br>
ハローワールド
<br>
hello worldハローワールド2<br>
hello world2<br>
<br>
cモードでdata/write/write18.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>
c+モードでdata/write/write19.txtの書き込み<br>
ハローワールド2<br>
hello world2<br>
<br>

コメント