Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【PHP】ディレクトリを操作する・ファイルの存在確認の関数

こんにちは😊Kintarouです。

現在エンジニア転職を目指してTECH CAMPにてプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人が働きやすいシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


今回参考にさせて頂いたサイト様🙇‍♂️
dotinstall.com


ディレクトリを操作する

ディレクトリにあるファイルの内容を取得します。
ディレクトリを取得するのにopendir、ディレクトリ内のファイルを読み込むのにreaddirを使います。

<?php

#file_put_contentsを用いて事前に作成しておいたdataディレクトリに下記のファイルを作成します。
file_put_contents('data/text1.txt', "text1\n");
file_put_contents('data/text2.txt', "text2\n");

#opendirでdataファイルを取得し、readdirを用いて先ほど作成したファイルを読み込みます。
#読み込むファイルが無くなったらfalseを返すのでwhileでtrueの間は読み込みます。
#ディレクトリをあらわすドットが読み込まれるのですが不要なのでcontinueでスキップします。
$dp = opendir('data');
while (($item = readdir($dp)) !== false) {
  if ($item === '.' || $item === '..'){
    continue;
  }
  echo $item . PHP_EOL;
}

#=>text2.txt
#=>text1.txt


#上記の内容をglob関数を使うことで同じ動作ができます。
#ワイルドカードを使って当てはまるファイルを配列要素として読み込めます。
#

foreach (glob('data/*.txt')as $item) {
  echo basename($item) . PHP_EOL;
}

#=>text1.txt
#=>text2.txt

ディレクトリやファイルのチェックを行う

以下で、ファイルが存在しているか、書き込み、読み込み可能かをチェックできます。

関数名 処理内容
file_exists 指定したファイルが存在するかを真偽値で返す
is_writable 指定したファイルが書き込み可能かを真偽値で返す
is_readable 指定したファイルが読み込み可能かを真偽値で返す
<?php

#上記で作成したdataディレクトリの存在確認をします。
if(file_exists('data') === true) {
  echo 'data exists!' . PHP_EOL;
}

#=>data exists!

#dataディレクトリの中のtext1.txtが書き込み可能かを確認します。
if(is_writable('data/text1.txt') === true) {
  echo 'text1 is writable!' . PHP_EOL;
}

#=>text1 is writable!

#dataディレクトリの中のtext2.txtが読み込み可能かを確認します。
if(is_readable('data/text2.txt') === true) {
  echo 'text2 is readable!' . PHP_EOL;
}

#=>text2 is readable!

以上、どなたかの参考になれば幸いです😊