wxDir портируемый эквивалент функций Unix open/read/closedir. Также хорошо подходит для подсчета содержимого директорий.
Следующие флаги определяют какой вид имени включен в список файлов, подсчитанных GetFirst/GetNext.
enum { wxDIR_FILES = 0x0001, // включать файлы wxDIR_DIRS = 0x0002, // включать директории wxDIR_HIDDEN = 0x0004, // включать скрытые файлы wxDIR_DOTDOT = 0x0008, // включать символы перехода '.' и '..' // по умолчанию, считать все кроме '.' и '..' wxDIR_DEFAULT = wxDIR_FILES | wxDIR_DIRS | wxDIR_HIDDEN }
wxDir::wxDir wxDir()
Конструктор по умолчанию, после вызова использует Open().
wxDir(const wxString& dir)
Открывает директорию, используя IsOpened() во избежание ошибок.
wxDir::~wxDir ~wxDir()
Деструктор зачищает все используемые ресурсы.
wxDir::Exists static bool Exists(const wxString& dir)
Проверка на существование указанной директории.
wxDir::GetAllFiles static size_t GetAllFiles(const wxString& dirname, wxArrayString *files, const wxString& filespec = wxEmptyString, int flags = wxDIR_DEFAULT)
Функция помещает все имена файлов в директории dirname в массив files(помните, что старое содержимое сохраняется) . Берутся только файлы с указанной filespec, при неуказанном spec берутся все файлы.
Параметр flags должен всегда включать wxDIR_FILES или же массив не будет изменен, также следует включать флаг wxDIR_DIRS, для выполнения операции рекурсивно по подкаталогам.(Оба флага включены в значении по умолчанию)
wxDir::FindFirst static wxString FindFirst(const wxString& dirname, const wxString& filespec, int flags = wxDIR_DEFAULT)
Функция возвращает путь первого файла с указанной filespec или же пустую строку, если таких файлов не найдено.
Параметр flags может включать, а может и не включать wxDIR_FILES, функция всегда ведет себя так, как будто этот параметр указан. По умолчанию flags включает wxDIR_DIRS, поэтому она проходит рекурсивно и по подкаталогам, но если флаг не указан, она будет работать только с указанной директорией.
wxDir::GetFirst bool GetFirst(wxString* filename, const wxString& filespec = wxEmptyString, int flags = wxDIR_DEFAULT) const
Начинает подсчет всех файлов, удовлетворяющих filespec(или всех файлов, если не указано каких именно) и flags, возвращает истину, если все прошло успешно.
wxDir::GetName wxString GetName() const
Возвращает имя самой директории. Возвращаемая строка не содержит разделителей пути( слэшей или бэкслэшей).
wxDir::GetNext bool GetNext(wxString* filename) const
Продолжить подсчет файлов, удовлетворяющих параметрам, указанными в последнем вызове wxDir::GetFirst.
wxDir::GetTotalSize static wxULongLong GetTotalSize(const wxString& dir, wxArrayString* filesSkipped = NULL)
Возвращает размер в байтах всех файлов, в том числе и найденных рекурсивно, в случае ошибки - wxInvalidSize.
Случается так, что функция не может посчитать размер файла, тогда он будет помещен в массив filesSkipped , и если не NULL, тогда он будет пропущен. Такое случается, когда некоторые папки заблокированы операционной системой либо каким-то другим процессом. Помните, что когда filesSkipped->GetCount() не нуль, возвращенное функцией значение не есть 100% точное, и если размер пропущенных файлов велик, то это значение отнюдь не близко к реальному.
wxDir::HasFiles bool HasFiles(const wxString& filespec = wxEmptyString)
Возвращает истину, если в директории содержатся файлы с указанными filespec. Если filespec пусто то функция ищет любые файлы. В любом случае будут приниматься во внимание даже скрытые файлы.
wxDir::HasSubDirs bool HasSubDirs(const wxString& dirspec = wxEmptyString)
Возвращает истину, если каталог содержит подкаталоги (если задано значение filespec, то проверяет толькно на наличие директорий, удовлетворяющих ему). Скрытые папки также принимаются в расчет.
wxDir::IsOpened bool IsOpened() const
Возвращает истину, если директория была успешно открыта предыдущим вызовом Open.
wxDir::Open bool Open(const wxString& dir)
Открывает директорию для работы, возвращает истину, если удалось, ложь, если произошла ошибка.
wxDir::Traverse size_t Traverse(wxDirTraverser& sink, const wxString& filespec = wxEmptyString, int flags = wxDIR_DEFAULT)
Рекурсивно считает все файлы и папки в заданной директории, вызывая елемент от объекта wxDirTraverse к каждому из них.
Более точно, функция будет рекурсивно заходить в подкаталоги, если flags будет содержать флаг wxDIR_DIRS. Она будет игнорировать файлы(но будет рекурсивно заходить в подпапки) если указан флаг wxDIR_FILES.
Для каждой найденной папки и файла будут вызнваны sink.OnDir() и sink.OnFile(). В зависимости от возвращенного значения, просмотр может быть продолжен или остановлен.
Функция возвращает полное количество найденных файлов либо (size_t)-1, если произошла ошибка.