PHP
流 | Streams

streamWrapper::dir_readdir

streamWrapper::dir_readdir

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::dir_readdir - 从目录句柄中读取条目

描述

public string streamWrapper::dir_readdir ( void )

响应readdir()调用此方法。

参数

该函数没有参数。

返回值

应该返回表示下一个文件名的字符串,或者FALSE没有下一个文件。

注意:返回值将被转换为字符串。

错误/异常

E_WARNING如果对此方法的调用失败(即未实现),则发出。

示例

示例#1从tar档案中列出文件

<?php class streamWrapper {     protected $fp;     public function dir_opendir($path, $options) {         $url = parse_url($path         $path = $url["host"] . $url["path"];         if (!is_readable($path)) {             trigger_error("$path isn't readable for me", E_USER_NOTICE             return false;         }         if (!is_file($path)) {             trigger_error("$path isn't a file", E_USER_NOTICE             return false;         }         $this->fp = fopen($path, "rb"         return true;     }     public function dir_readdir() {         // Extract the header for this entry         $header      = fread($this->fp, 512         $data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1filetype/a100link/a100linkedfile", $header         // Trim the filename and filesize         $filename    = trim($data["filename"]         // No filename? We are the end of the archive         if (!$filename) {             return false;         }         $octal_bytes = trim($data["size"]         // Filesize is defined in octects         $bytes       = octdec($octal_bytes         // tar rounds up filesizes up to multiple of 512 bytes (zero filled)         $rest        = $bytes % 512;         if ($rest > 0) {             $bytes      += 512 - $rest;         }         // Seek over the file         fseek($this->fp, $bytes, SEEK_CUR         return $filename;     }     public function dir_closedir() {         return fclose($this->fp     }     public function dir_rewinddir() {         return fseek($this->fp, 0, SEEK_SET     } } stream_wrapper_register("tar", "streamWrapper" $handle = opendir("tar://example.tar" while (false !== ($file = readdir($handle))) {     var_dump($file } echo "Rewinding..\n"; rewind($handle var_dump(readdir($handle) closedir($handle ?>

上面的例子会输出类似于:

string(13) "construct.xml" string(16) "dir-closedir.xml" string(15) "dir-opendir.xml" string(15) "dir-readdir.xml" string(17) "dir-rewinddir.xml" string(9) "mkdir.xml" string(10) "rename.xml" string(9) "rmdir.xml" string(15) "stream-cast.xml" string(16) "stream-close.xml" string(14) "stream-eof.xml" string(16) "stream-flush.xml" string(15) "stream-lock.xml" string(15) "stream-open.xml" string(15) "stream-read.xml" string(15) "stream-seek.xml" string(21) "stream-set-option.xml" string(15) "stream-stat.xml" string(15) "stream-tell.xml" string(16) "stream-write.xml" string(10) "unlink.xml" string(12) "url-stat.xml" Rewinding.. string(13) "construct.xml"

另请参阅

  • readdir() - 从目录句柄中读取条目

← streamWrapper::dir_opendir

streamWrapper::dir_rewinddir →