1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_io_Directory_hpp
10 #define anna_io_Directory_hpp
12 #include <sys/types.h>
18 #include <anna/core/RuntimeException.hpp>
26 Abstraccion de un directorio de archivos sobre UNIX.
28 Permite recorrer el contenido de un directorio de archivos mediante iteradores.
34 #include <anna/io/io.hpp>
41 dir.read (".", Directory::Mode::ShortPath);
43 for (Directory::const_iterator ii = dir.begin (), maxii = dir.end (); ii != maxii; ii ++) {
44 const std::string& entry = Directory::data (ii);
46 .... procesa la entrada ...
55 Formas de obtener los archivos de un directorio.
59 ShortPath = 0, /**< Retorna solo el nombre del archivo. */
60 FullPath /**< Retorna el nombre completo del archivo. */
64 typedef std::vector <std::string> Files;
65 typedef Files::const_iterator const_iterator;
75 virtual ~Directory() { clearPattern(); }
78 Establece un filtro con la expresion regular que deben cumplir los archivos de este directorio.
79 \param expression Expresion regular que deben cumplir los archivos.
80 \warning Este metodo debe ser invocado antes de #read.
82 void setPattern(const char* expression) noexcept(false);
85 Elimina cualquier otro filtro que pudiera haber sido establecido mediante #setPattern.
87 void clearPattern() { setPattern(NULL); }
90 Lee las entradas del directorio indicado como parametro.
91 \param dirName Ruta al nombre de directorio.
92 \param mode Forma de obtener el nombre del los archivos.
94 void read(const char* dirName, const Mode::_v mode) noexcept(false);
97 Lee las entradas del directorio indicado como parametro.
98 \param dirName Ruta al nombre de directorio.
99 \param mode Forma de obtener el nombre del los archivos.
101 void read(const std::string& dirName, const Mode::_v mode) noexcept(false) { read(dirName.c_str(), mode); }
104 Devuelve un iterador a la primera entrada del directorio.
105 \return Un iterador a la primera entrada del directorio.
107 const_iterator begin() const { return a_files.begin(); }
110 Devuelve un iterador a la ultima entrada del directorio.
111 \return Un iterador a la utlima entrada del directorio.
113 const_iterator end() const { return a_files.end(); }
116 Devuelve un iterador a la entrada del directorio que corresponde con el nombre indicado.
117 \return un iterador a la entrada del directorio que corresponde con el nombre indicado.
119 const_iterator find(const std::string& file) const ;
122 Devuelve la entrada referenciado por el iterador recibido.
123 \return La entrada referenciado por el iterador recibido.
125 static const std::string& data(const_iterator& ii) { return *ii; }