どうも。みずかず(@mizukazu_1)です。
そろそろ夏が終わりに近づいてきましたね。
もう少し暑さが和らいでくれると過ごしやすいんですがね。。。
さて、今回はPHPでファイルの入出力の行う方法をまとめていきます!
Json形式で扱う事も多いかと思いますが、この記事ではテキストファイルを想定して書いていきますね。
ファイル入出力の考え方
まず、ファイル入出力の考え方ですが
ファイルを開く⇒ファイルを読み込みor書き込み⇒ファイルを閉じる が基本になります。
PC上でテキストファイルを操作する時も
まずファイルを開いて、書き込んで、ファイルを閉じるといった一連の操作を行いますよね。
それと同じでプログラムから操作する時もこの一連の操作を行います。
DBの操作も似ているので割と重要な部分になります。
ファイルを開く(fopen関数)
まず、ファイルを開くためにfopen関数を使用します。
使用方法は以下になります。
$test = $fopen("sample.txt", "r");
第一引数:操作したいファイルのパス
第二引数:モード
第一引数は見たら分かる通り、ファイルへのパスですね。
特に説明することもないので割愛します。
第二引数のモードですが、これはどういったモードでファイルを操作するかという事を指定します。
この例では”r”を指定しています。
これは読み取り専用で開くというモードになります。
wは書き込み、w+であれば読み書き両方。
といった具合で決められています。
また、モードによってファイルが存在しない場合にエラーが出るか出ないかが決められているので注意しなければなりません。
また、書き込みに関しては新規で書き込むのか、追記で書き込むのかといった指定もありますので
自分がどちらで操作をしたいのかを確認しなければいけません。
ファイルの読み込み(fgets関数)
ファイルの読み込みではfgets関数を使用します。
使用方法は以下の通りです。
$test = fopen("sample.txt", "r");
while ($line = fgets(test)) {
echo "$test";
}
第一引数:ファイルパス
第二引数:モード
まず、操作したいファイルを読み取り専用で開きます。
次にwhileを使ってファイルの内容を1行ずつ出力しているといった感じです。
fgets関数は読み込むデータが無い場合にfalseを返すのでwhileの条件として
使う事でファイルを1行ずつ読み取ることが出来ます。
ファイルの出力(fwrite関数)
ファイルに出力を行うにはfwrite関数を使用します。
使用方法は以下の通りです。
$test = fopen("sample.txt", "w");
fwrite($test, "HelloWorld!");
第一引数:ファイルポインタ
第二引数:出力したい内容
まず、fopen関数を使用してファイルを書き込みモードで開きます。
wは書き込み用のモードでしたね。
無事開けたら、fwrite関数を使用して書き込みを行います。
fwrite関数の第二引数に指定した内容でファイルの出力が行われます。
追記の場合
fopen関数の第二引数に”a”を指定してあげればいいだけです。
ファイル入出力に慣れてない頃に追記の方法が分からなくて結構悩んだ覚えがあります。笑
ファイルを閉じる(fclose関数)
最後にファイルを閉じる方法ですが、fclose関数を使用します。
使用方法は以下の通りです。
// 引数はファイルポインタです
fclose($test);
コメントにもある通り引数にはファイルポインタを指定します。
fclose関数はファイルを閉じるために使用しますので
操作が終わったら必ず実行してください。
読み取り時、書き込み時両方共です。
テキストファイルを×ボタンで閉じるのと同じ感覚ですね。
開けたら閉める。
基本の動作なので忘れないように注意しましょう。
最後に
今回はPHPでのファイル入出力操作のまとめを行いました。
どの言語でもそうなのですが、ファイルの操作って使う時に結構忘れてるんですよね。
実際僕もこの記事を書いてて改めて思い出した部分もあります。
ファイル操作に関しては使用頻度的に恐らくそんなに高くないと思いますが
これくらいはいつでもサクッと書けるように覚えておきたいですよね!
スポンサーリンク