PROGRAMMING
PHP
javascript
- ページャーを作る(簡易版)
- ページャーを作る 4/4
(クロスブラウザ対策)
(ページャー表示用メソッド)
(ページャーの使い方) - ページャーを作る 3/4
(イベント登録) - ページャーを作る 2/4
(スタイルの設定) - ページャーを作る 1/4
(ページャー用関数を準備)
(各要素を生成) - 自作カレンダーを作る 6/6
(11.~14.各種メソッド)
(15.簡単な使い方) - 自作カレンダーを作る 5/6
(09.祝休日の判定)
(10.閏年の判定) - 自作カレンダーを作る 4/6
(08.イベントの設定) - 自作カレンダーを作る 3/6
(07.スタイルの設定) - 自作カレンダーを作る 2/6
(05.カレンダーのマスのみ作成)
(06.各マスへ年月・日付を埋め込み) - 自作カレンダーを作る 1/6
(01.カレンダーの基を準備)
(02.各月の日数や年月日の区切り文字)
(03.前月・次月指定時の処理)
(04.前月・次月部分の年月を算出) - JS-Image-Resizerを使って画像を高画質で縮小
- ファイルを作成しローカルに保存
- モーダルウィンドウをクラス化
- ストップウォッチを作る
- XMLHttpRequest Lebel2を試してみる
- jQuery:Tableで親・子・兄弟要素を取得
- 文字列をセパレータ文字で分割し配列で返す関数
- forループのカウンタを使用している関数の定義
- クロージャの使いどころ
- JSONPでクロスドメイン
- AjaxでJSON形式のデータを扱う
- jsファイルからjsファイルを呼び出す
- jQuery:モーダルウィンドウを作ってみる
CSS
- フォルダ構成をCSSで見やすくする
- シンタックスハイライトPrismのカスタマイズ
- リスト(li)を中央に配置する
- ブロックレベル要素全体をリンクにする
- 実践と点線の交わり部分のギザギザをすっきりさせる
Java
- IntelliJ.Gradle.JavaFX(6) プラグイン org.beryx.jlink を使ってみる
- IntelliJ.Gradle.JavaFX(5) NSISでインストーラーを作る
- IntelliJ.Gradle.JavaFX(4) exewrapで実行可能jarをexe化する
- IntelliJ.Gradle.JavaFX(3) Jlink でカスタム JRE を作る
- IntelliJ.Gradle.JavaFX(2) すべての依存対象を含んだ Fatjar を作る
- IntelliJ.Gradle.JavaFX(1) アプリケーションを作る
- javaのコンパイルと実行
- イメージを回転する
- Exif情報を簡単に取得できるライブラリ
- 高画質で画像縮小
- JDBCによるデータベース操作
テキストファイルの操作
phpに限らず、プログラミングではテキストファイルの読み込み・書き込みなどを行う処理が多くでてきます。 今回はphpでのテキストファイルの読み書きについて確認します。
ファイル処理の流れ
言語により多少の違いはありますが、ファイル処理の流れは概ね次の通りです。 1. ファイルを開く 2. ファイルをロックする 3. データを処理する(読み込む・追加する・上書きする) 4. ファイルのロックを解除する 5. ファイルを閉じる
ファイルを開く
ファイルを開くときにはfopen()関数を使用します。fopen()関数の戻り値はファイルポインタです。
書式:fopen(ファイルパス, 読み書きモード)
用例:$fp = fopen("../test/sample.txt", "r")
読み書きのモードには主に次のような値があります。
モード | 読み書き | 指定のファイルが無いとき |
---|---|---|
r | 読み | エラー |
r+ | 読み・書き | エラー |
w | 上書き | 新規作成 |
w+ | 上書き・読み | 新規作成 |
a | 追加 | 新規作成 |
a+ | 追加・読み | 新規作成 |
ファイルをロックする・ロックを解除する
ファイルを処理中にその内容が変更されないようにロックします。flock()関数を使用します。
flock()はロックの解除にも使用します。
書式:flock(ファイルポインタ, ロックの方法)
用例:flock($fp, LOCK_EX)
ロックの方法 | 説明 |
---|---|
LOOK_SH | 共有ロック:参照は出来るが変更が出来ない |
LOOK_EX | 排他的ロック:参照も変更も出来ない |
LOCK_UN | ロックを解除 |
LOCK_NB | ロック中にflock()でブロックさせない |
データを処理する
データの読み込み・書き込みにはそれぞれ次の関数を使います。
データの読み込みにはfgets()関数を使用します。ファイルから1行(改行単位で)読み込みます。
書式:fgets(ファイルポインタ)
用例:fgets($fp)
データの書き込みにはfputs()かfwrite()、どちらも同じものです。
書式:fputs(ファイルポインタ, 書き込む文字列)
用例:fputs($fp, "あいうえお")
ファイルを閉じる
データを処理し、ロックを解除した後はfclose()関数でファイルを閉じます。
書式:fclose(ファイルポインタ)
用例:fclose($fp)
コードの一連の流れ
今までの関数を使ったコードのサンプルです。
// 読み込みモードでファイルオープン
$fp = fopen("../test/sample.txt", "r") or die("file open error");
// ファイルを共有ロック
flock($fp, LOCK_SH);
// ファイルの最後まで一行づつデータを表示
while(!feof($fp)){
$string = fgets($fp);
echo $string."<br>";
}
// ロックを解除
flock($fp, LOCK_UN);
// ファイルを閉じる
fclose($fp);
// 追加モードでファイルオープン
$fp = fopen("../test/sample.txt", "a") or die("file open error");
// ファイルを排他ロック
flock($fp, LOCK_EX);
// データを改行文字付きで書き込み
fputs($fp, "あいうえお\n");
// ロックを解除
flock($fp, LOCK_UN);
// ファイルを閉じる
fclose($fp);
読み込みに便利なfile()関数
この他に便利な関数に、fopen()とfclose()を内部的に処理しているfile()関数もあります。
ファイルを一気に読み込み、各行が要素になった配列を返します。
// ファイルの全データを行を要素にした配列に
$aryText = file("../test/sample.txt");
// 配列の内容を一行ずつ表示
foreach($aryText as $key=>$value){
echo ($key + 1)."行目:".$value;
}
読み込み処理にはこれが一番コードが少なく便利です。
この他にもファイル操作には便利な関数が沢山あります。