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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com