streamWrapper::dir_readdir
(PHP 4 >= 4.3.2, PHP 5)
streamWrapper::dir_readdir — Read entry from directory handle
Description
public string streamWrapper::dir_readdir
( void
)
This method is called in response to readdir().
Parameters
This function has no parameters.
Return Values
Should return string representing the next filename, or
FALSE
if there is no next file.
Note:
The return value will be casted to string.
Errors/Exceptions
Emits
E_WARNING
if call to this method fails
(i.e. not implemented).
Examples
Example #1 Listing files from tar archives
<?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);
?>
The above example will output something similar to:
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"
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Другие базовые расширения
- Потоки
- Функция streamWrapper::__construct() - Создает новый объект-обертку для потока
- Функция streamWrapper::__destruct() - Уничтожает существующую обертку потока
- Функция streamWrapper::dir_closedir() - Обработчик закрытия директории
- Функция streamWrapper::dir_opendir() - Обработчик открытия директории
- Функция streamWrapper::dir_readdir() - Обработчик чтения содержимого директории
- Функция streamWrapper::dir_rewinddir() - Обработчик перемещения на начало директории
- Функция streamWrapper::mkdir() - Создание директории
- Функция streamWrapper::rename() - Переименовывает файл или директорию
- Функция streamWrapper::rmdir() - Удаляет директорию
- Функция streamWrapper::stream_cast() - Получает ресурс уровнем ниже
- Функция streamWrapper::stream_close() - Закрывает ресурс
- Функция streamWrapper::stream_eof() - Проверяет достижение конца файла по файловому указателю
- Функция streamWrapper::stream_flush() - Сохранение данных вывода
- Функция streamWrapper::stream_lock() - Advisory file locking
- Функция streamWrapper::stream_metadata() - Изменяет настройки потока
- Функция streamWrapper::stream_open() - Открывает файл или URL
- Функция streamWrapper::stream_read() - Читает из потока
- Функция streamWrapper::stream_seek() - Перемещение на заданную позицию в потоке
- Функция streamWrapper::stream_set_option() - Изменение настроек потока
- Функция streamWrapper::stream_stat() - Получение информации о файловом ресурсе
- Функция streamWrapper::stream_tell() - Определение текущей позиции потока
- Функция streamWrapper::stream_truncate() - Усечение потока
- Функция streamWrapper::stream_write() - Запись в поток
- Функция streamWrapper::unlink() - Удаление файла
- Функция streamWrapper::url_stat() - Получение информации о файле
Коментарии
404 Not Found