PHPでファイルを作成する方法をいくつかご紹介します。
処理中にファイルがなければ自動的に作成してくれるもので、ファイルを開いたりファイルを書き込む途中や、ファイルの更新日をセットする際などさまざまなタイミングで作成可能です。
目次
touch関数で空ファイル作成
ファイルの最終更新日および最終アクセス時間をセットします。
ファイルが存在していなかったら、ファイルが作成されます。
ファイルを1個作成
1 2 |
// ファイルがなければ新規で作成 touch('file.txt'); |
以上でファイルが作成されました。
ファイルを複数作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// 作成するファイル名を複数配列に格納 $files = array('file.txt', 'file2.txt', 'file3.txt'); // ファイルが入った配列を1つずつループ処理 foreach ($files as $file) { // file_existsでファイルが存在しているか判定 if(file_exists($file)) { // ファイルはすでにあると通知 echo $file.'はすでにあります。'; } else { // touchでファイル作成 touch($file); // ファイルを作成したと通知 echo $file.'作成しました。<br>'; } // 以上をループ処理 } |
file.txtを作成しました。
file2.txtを作成しました。
file3.txtを作成しました。
foreach()
を使って、複数のファイルを作成しました。
file_exists()
はファイルが存在しているかをチェックしてくれる関数で、if文を使いファイルがあるかどうかを判定しており、ファイルがなかった場合にのみtouch()
でファイル作成を試みています。
ただ、元々はファイルの最終更新日をセットする関数なので、ファイルの最終更新日が変わっても問題ない場合は、if文で条件分岐する必要はないでしょう。
touch関数の構文
touch ( 対象ファイル名 [ , 最終更新日 [ , atime]]([ ]は省略可));
touch()
はもともと、ファイルの最終更新日やアクセス時刻を任意の日時に書き換える関数です。
もし対象ファイルが存在しない場合、自動的にそのファイル名で作成してくれるため、先ほどのサンプルはそれを利用したものです。
fopen関数でファイル作成
ファイルやURLをオープンします。
ファイル書き込み時にファイル作成
fwrite()
などを使ってファイルに書き込む際、fopen()
でまずファイルをオープンして、処理できる状態にします。
ただ、もしファイルが存在しない場合はtouch()
同様、自動で作成してくれるので、それを利用します。
ファイルに書き込む際に、ファイルがなければ自動で作成するので、より実用的ではないでしょうか。
詳しくは、以下の記事で書いていますので、確認してみてください。
file_put_contents関数でファイル作成
ファイルに文字列を書き込みます。
より簡単に書き込み時にファイル作成
先ほどのfopen()
を使った書き込みだと、fopen()
→fwrite()
→fclose()
と3つの関数を使います。
ただ、このfile_put_contents()
を使うと、この3つの関数の働きを1つでやってくれるため、より簡単に書き込みができます。
そしてtouch()
同様この関数も、ファイルがなければ自動で作成するのでより実用的でしょう。
詳しくは、以下の記事でご確認ください。
参考:file_put_contents関数で簡単に書き込み