Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Describe un iterador de entrada que secuencia por medio de los nombres de archivo de un directorio, posiblemente descendiendo a los subdirectorios de forma repetitiva. En el caso de un iterador X, la expresión *X se evalúa como un objeto de la clase directory_entry que contiene el nombre de archivo y cualquier elemento conocido sobre su estado.
Para obtener más información y ejemplos de código, vea Exploración del sistema de archivos (C++).
Sintaxis
class recursive_directory_iterator;
Comentarios
La plantilla de clase almacena:
un objeto del tipo
stack<pair<directory_iterator, path>>, de nombremystackaquí, para la exposición, que representa el anidamiento de directorios que se van a secuenciarun objeto del tipo
directory_entry, de nombremyentryaquí, que representa el nombre de archivo actual en la secuencia de directoriosun objeto del tipo
bool, de nombreno_pushaquí, que registra si está deshabilitado el descenso recursivo a subdirectoriosun objeto del tipo
directory_options, de nombremyoptionsaquí, que registra las opciones establecidas durante la construcción
Un objeto construido predeterminado de tipo recursive_directory_entry tiene un iterador de final de secuencia en mystack.top().first y representa el iterador de final de secuencia. Por ejemplo, si se tiene el directorio abc con entradas def (un directorio), def/ghi y jkl, el código:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
llama a visit con los argumentos path("abc/def/ghi") y path("abc/jkl"). Puede calificar secuencias por medio de un subárbol de directorios de dos maneras:
Un directorio symlink se examina únicamente si se construye
recursive_directory_iteratorcon un argumentodirectory_optionscuyo valor esdirectory_options::follow_directory_symlink.Si se llama a
disable_recursion_pending, un directorio posterior encontrado durante un incremento no se examina de forma recursiva.
Constructores
| Constructor | Descripción |
|---|---|
| recursive_directory_iterator | Construye un objeto recursive_directory_iterator. |
Funciones miembro
| Función de miembro | Descripción |
|---|---|
| depth | Devuelve mystack.size() - 1, así que pval está en profundidad cero. |
| disable_recursion_pending | Almacena true en no_push. |
| increment | Avanza al siguiente nombre de archivo de la secuencia. |
| options | Devuelve myoptions. |
| pop | Devuelve el siguiente objeto. |
| recursion_pending | Devuelve !no_push. |
Operadores
| Operador | Descripción |
|---|---|
| operator!= | Devuelve !(*this == right). |
| operator= | Los operadores predeterminados de asignación de miembros se comportan según lo previsto. |
| operator== | Solo devuelve true si *this y right son iteradores de final de secuencia o si ninguno lo es. |
| operator* | Devuelve myentry. |
| operator-> | Devuelve &**this. |
| operator++ | Incrementa recursive_directory_iterator. |
Requisitos
Encabezado:<filesystem>
Espacio de nombres: std::tr2::sys
recursive_directory_iterator::depth
Devuelve mystack.size() - 1, así que pval está en profundidad cero.
int depth() const;
recursive_directory_iterator::disable_recursion_pending
Almacena true en no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Avanza al siguiente nombre de archivo de la secuencia.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parámetros
ec
Código de error especificado.
Comentarios
La función intenta avanzar al siguiente nombre de archivo de la secuencia anidada. Si es correcto, almacena ese nombre de archivo en myentry; en caso contrario, produce un iterador de final de secuencia.
recursive_directory_iterator::operator!=
Devuelve !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Parámetros
right
recursive_directory_iterator, para la comparación.
recursive_directory_iterator::operator=
Los operadores predeterminados de asignación de miembros se comportan según lo previsto.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parámetros
recursive_directory_iterator
recursive_directory_iterator que se va a copiar en recursive_directory_iterator.
recursive_directory_iterator::operator==
Solo devuelve true si *this y right son iteradores de final de secuencia o si ninguno lo es.
bool operator==(const recursive_directory_iterator& right) const;
Parámetros
right
recursive_directory_iterator, para la comparación.
recursive_directory_iterator::operator*
Devuelve myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Devuelve &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Incrementa recursive_directory_iterator.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parámetros
int
Incremento especificado.
Comentarios
La primera función miembro llama a increment() y luego devuelve *this. La segunda función miembro hace una copia del objeto, llama a increment() y luego devuelve la copia.
recursive_directory_iterator::options
Devuelve myoptions.
directory_options options() const;
recursive_directory_iterator::pop
Devuelve el siguiente objeto.
void pop();
Comentarios
Si depth() == 0, el objeto se convierte en un iterador de final de secuencia. De lo contrario, la función miembro termina el análisis del directorio actual (más profundo) y lo reanuda en el siguiente nivel inferior.
recursive_directory_iterator::recursion_pending
Devuelve !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Construye un objeto recursive_directory_iterator.
recursive_directory_iterator() noexcept;
explicit recursive_directory_iterator(const path& pval);
recursive_directory_iterator(const path& pval,
error_code& ec) noexcept;
recursive_directory_iterator(const path& pval,
directory_options opts);
recursive_directory_iterator(const path& pval,
directory_options opts,
error_code& ec) noexcept;
recursive_directory_iterator(const recursive_directory_iterator&) = default;
recursive_directory_iterator(recursive_directory_iterator&&) noexcept = default;
Parámetros
pVal
La ruta de acceso especificada.
error_code
Código de error especificado.
Opta
Opciones de directorio especificadas.
recursive_directory_iterator
recursive_directory_iterator del que el recursive_directory_iterator construido va a ser una copia.
Comentarios
El primer constructor crea un iterador de final de secuencia. Los constructores segundo y tercero almacenan false en no_push y directory_options::none en myoptions, e intentan abrir y leer pval como un directorio. Si lo logran, inicializan mystack y myentry para designar el primer nombre de archivo que no es de directorio de la secuencia anidada; de lo contrario, producen un iterador de final de secuencia.
Los constructores cuarto y quinto se comportan igual que el segundo y el tercero, salvo que primero almacenan opts en myoptions. El constructor predeterminado se comporta según lo previsto.
Consulte también
Referencia de archivos de encabezado
<filesystem>
Exploración del sistema de archivos (C++)