streamWrapper::dir_readdir Leer una entrada desde el gestor de directorio &reftitle.description; public stringstreamWrapper::dir_readdir Este método es llamado en respuesta a readdir. &reftitle.parameters; &no.function.parameters; &reftitle.returnvalues; Debería devolver un valor de tipo string que representa el siguiente nombre de archivo, o &false; si no hay un siguiente archivo. El valor devuelto será convertido a un valor de tipo string. &reftitle.errors; &userstream.not.implemented.warning; &reftitle.examples; Listar los ficheros de archivos tar fp = fopen($ruta, "rb"); return true; } public function dir_readdir() { // Extraer la cabecera para esta entrada $cabecera = fread($this->fp, 512); $data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1filetype/a100link/a100linkedfile", $cabecera); // Recortar el nombre de archivo y tamaño de archivo $nombre_archivo = trim($data["filename"]); // ¿No hay nombre de archivo? Estamos en el final del archivo tar if (!$nombre_archivo) { return false; } $octal_bytes = trim($data["size"]); // El tamaño de archivo es definido en octetos $bytes = octdec($octal_bytes); // tar redondea hacia arriba en múltiplos de 512 bytes (rellenando con ceros) $resto = $bytes % 512; if ($resto > 0) { $bytes += 512 - $resto; } // Buscar sobre el archivo fseek($this->fp, $bytes, SEEK_CUR); return $nombre_archivo; } public function dir_closedir() { return fclose($this->fp); } public function dir_rewinddir() { return fseek($this->fp, 0, SEEK_SET); } } stream_wrapper_register("tar", "streamWrapper"); $gestor = opendir("tar://ejemplo.tar"); while (false !== ($file = readdir($gestor))) { var_dump($file); } echo "Rewinding..\n"; rewind($gestor); var_dump(readdir($gestor)); closedir($gestor); ?> ]]> &example.outputs.similar; &reftitle.seealso; readdir