PHP 目录 readdir() 函数



PHP 目录readdir()函数用于查找目录中文件或文件夹的名称。顾名思义,readdir 代表“读取目录”。此函数基本上一次读取一个文件或文件夹的名称。文件系统存储返回条目的顺序。该函数被称为“readdir”,因为它读取目录中的内容。

它返回目录中下一个文件的名称。文件名按文件系统存储的顺序返回。

由于此函数一次仅从目录中返回一个元素,因此您可能想知道如果存在多个文件或文件夹,如何一次检索目录中的所有项目。为此,您可以运行循环或使用 scandir() 方法。

语法

以下是 PHP 目录readdir()函数的语法 -

string readdir ( resource $dir_handle );

参数

使用readdir()函数所需的参数如下所述 -

序号 参数和描述
1

dir_handle(必填)

之前使用opendir()打开的目录句柄资源。

返回值

成功时返回文件名,失败时返回 FALSE。

PHP 版本

首次出现在 core PHP 4 中,readdir()函数在 PHP 5、PHP 7 和 PHP 8 中继续轻松运行。

示例

在此示例中,我们将向您展示如何在使用 opendir() 函数打开目录后使用 PHP 目录readdir()函数使用 while 循环。

<?php
   $dir = opendir("/var/www/images");

   while (($file = readdir($dir)) !== false) {

      echo "filename: " . $file . "<br />";
   }

   closedir($dir);
?> 

输出

这将产生以下结果 -

filename: .
filename: ..
filename: logo.gif
filename: mohd.gif

示例

之前我们已经看到如何使用 while 循环和readdir()函数检索文件,现在我们将看到如何使用 if-else 语句显示文件名。

<?php
   // declare the directory path (You can replace it with your specific directory path)
   $directory = "/Applications/XAMPP/xamppfiles/htdocs/mac/new dir";

   if(is_dir($directory)){
      if($dir_handle = opendir($directory)){
         while(false !== ($entry = readdir($dir_handle))){
               echo "My Directory Content is: " . $entry . "<br>";
         }
      }
   }else{
      echo "This is not a directory.";
   }
?> 

输出

这将导致以下结果 -

My Directory Content is: .
My Directory Content is: ..
My Directory Content is: .DS_Store
My Directory Content is: Pictures
My Directory Content is: my_folder
My Directory Content is: index.txt
My Directory Content is: my.txt

示例

在最后一个示例中,您可以在输出中看到存在 . 或 ..,因此在此示例中,我们将删除它们以更好地查看文件或文件夹。为了实现此功能,我们将只使用 if 条件。

<?php
   // declare the directory path (You can replace it with your specific directory path)
   $directoryPath = "/Applications/XAMPP/xamppfiles/htdocs/mac/new dir";

   if(is_dir($directoryPath)){
      if($handle = opendir($directoryPath)){
         while(false !== ($item = readdir($handle))){
               if ($item != "." && $item != "..") {
                  echo "Item in Directory: " . $item . "<br>";
               }
         }
         closedir($handle); // Close the directory handle
      }
   }else{
      echo "The specified path is not a directory.";
   }

?> 

输出

此 PHP 代码的结果为 -

Item in Directory: .DS_Store
Item in Directory: Pictures
Item in Directory: my_folder
Item in Directory: index.txt
Item in Directory: my.txt

示例

正如我们已经看到如何使用readdir()函数读取目录中存在的实体的不同示例。现在我们将只读取文件并保留其他内容,如图像和存在的文件夹。

<?php
   // declare the directory path (You can replace it with your specific directory path)
   $directory = "/Applications/XAMPP/xamppfiles/htdocs/mac/new dir";

   // check if the specified path is a directory
   if(is_dir($directory)){
      // open the directory
      if($dir_handle = opendir($directory)){
         // Loop over each entry in the directory
         while(false !== ($entry = readdir($dir_handle))){
               // check if the entry is a file
               if (is_file($directory . "/" . $entry)) {
                  // echo the name of the file
                  echo "File in Directory: " . $entry . "<br>";
               }
         }
         // close the directory handle
         closedir($dir_handle);
      }
   } else {
      // echo an error message if the specified path is not a directory
      echo "The specified path is not a directory.";
   }
?> 

输出

这将产生以下输出 -

File in Directory: .DS_Store
File in Directory: index.txt
File in Directory: my.txt

注意

当您调用readdir()方法时,会出现两个不同的项目:一个点 (.) 表示当前目录,两个点 (..) 表示父目录。父目录是现在直接位于此目录上方的文件夹。通常,在处理目录中的文件时,您不需要使用这些特定项目。

总结

PHP 的readdir()方法用于一次读取目录内文件和目录的名称。返回目录中下一个文件或文件夹的名称。此方法可用于按顺序列出目录内容;它包括当前目录 (.) 和父目录 (..) 的特殊条目。

php_function_reference.htm
广告