Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 reference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial
ASP ADO リファレンス | PHP関数リファレンス | MySQL関数リファレンス

ディレクトリの内容を読み取る

■ opendir関数、readdir関数、closedir関数を使ってディレクトリの内容を読み取る

opendir関数、readdir関数、closedir関数を使うと、あるディレクトリの下にどのようなファイルやディレクトリが置かれているかを調べることができます。
手順としては、まずopendir関数を使って目的のディレクトリを開き、ディレクトリハンドルを取得します

ハンドル = opendir (パス)

次にopendir関数で取得したディレクトリハンドルを引数としてreaddir関数を実行しディレクトリの内容を読み取ります。

文字列 = readdir (ハンドル)

読み取り終わったら、closedir関数でディレクトリハンドルを破棄します。

closedir (ハンドルリ)

ディレクトリを最後まで読み取った後に、もう一度同じディレクトリハンドルを利用したい場合は、closedir関数を実行する前にrewinddir関数でディレクトリハンドルをディレクトリの先頭に渡します。

rewinddir (リソース)

<?php
   define("TEST_READDIR", ".");
   header("Content-Type: text/plain; charset=EUC-JP");

   // ディレクトリを開く
   $handle = opendir(TEST_READDIR);

   echo "[ディレクトリ]\n";
   while (($entry = readdir($handle)))
   {
      if(is_dir(TEST_READDIR . "/" . $entry))
      {
         echo $entry . "\n";
      }
   }
   echo "\n";

   // ハンドルをリセット
   rewinddir($handle);

   echo "[ファイル]\n";
   while (($entry = readdir($handle)))
   {
      if(is_file(TEST_READDIR . "/" . $entry))
      {
         echo $entry . "\n";
      }
   }

   // ディレクトリを閉じる
   closedir($handle);
?>

■ dirクラスを使ってディレクトリの内容を読み取る

dirクラスは、次のような作りになっています。

オブジェクト = dir(パス)

patch ディレクトリへのパス
handle ディレクトリハンドル
文字列 = read ( ) ディレクトリへの内容を読み取る
rewind ( ) ディレクトリハンドルを初期化
close ( ) ディレクトリをクローズする

 

操作の手順としては、まずコンストラクタdirにパスを指定してオブジェクトを作成します。

$obj = dir("/patch/to/some/dir");

次に、readメソッドでディレクトリのディレクトリの内容を読み取り、

$entry = $obj -> read( );

最後にcloseメソッドでディレクトリを閉じます。

$obj -> close( );

<?php
   define("TEST_DIR", ".");
   header("Content-Type: text/plain; charset=EUC-JP");

   // オブジェクトを作成
   $obj = dir(".");

   echo "[ディレクトリ]\n";
   while (($entry = $obj->read()))
   {
      if(is_dir(TEST_DIR . "/" . $entry))
      {
         echo $entry . "\n";
      }
   }
   echo "\n";

   // ハンドルをリセット
   $obj->rewind();

   echo "[ファイル]\n";
   while (($entry = $obj->read()))
   {
      if(is_file(TEST_DIR . "/" . $entry))
      {
         echo $entry . "\n";
      }
   }

   // ディレクトリを閉じる
   $obj->close();
?>

■ scandir関数を使ってディレクトリの内容を読み取る

PHP5で新たに加わったscandir関数を使うと、ディレクトリの内容を簡単に読み取ることができます。

配列 = scandir(パス, [ソート])

オプションの「ソート」に指定する値によって返される配列のソート順が変わります。

無指定 昇順ソート
1 降順ソート

 

<?php
   define("TEST_SCANDIR", ".");
   header("Content-Type: text/plain; charset=EUC-JP");

   //ファイルリストを取得
   $list = scandir(TEST_SCANDIR);

   echo "[ディレクトリ]\n";
   foreach ($list as $value)
   {
      if(is_dir(TEST_SCANDIR . "/" . $value))
      {
         echo $value . "\n";
      }
   }
   echo "\n";

   echo "[ファイル]\n";
   foreach ($list as $value)
   {
      if(is_file(TEST_SCANDIR . "/" . $value))
      {
         echo $value . "\n";
      }
   }
?>

<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル