Открытые члены | Открытые статические члены

Класс nitro::Directory

Класс алгоритмов работы с директориями. Подробнее...

#include <utilities/directory_utilities.h>

Полный список членов класса

Открытые члены

virtual ~Directory ()

Открытые статические члены

static void ForceCreateDirectory (const char *DirPath)
static void ForceCreateDirectory (const std::string &DirPath)
static bool DirectoryExists (const char *DirPath)
static bool DirectoryExists (const std::string &DirPath)

Подробное описание

Класс алгоритмов работы с директориями.

Автор:
Додонов А.А.

См. определение в файле directory_utilities.h строка 49


Конструктор(ы)

nitro::Directory::~Directory (  )  [virtual]

Деструктор (виртуальный).

Автор:
Додонов А.А.

См. определение в файле directory_utilities.cpp строка 113

        {
                try
                {
                }
                catch( ... )
                {
                }
        }


Методы

bool nitro::Directory::DirectoryExists ( const char *  DirPath  )  [static]

Проверяет существование папки.

Аргументы:
DirPath - Путь к папке чье существование проверяется. Наличие концевого слэша не требуется.
Возвращает:
true если директория существует, false если не существует.
Исключения:
nitro::exception Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле directory_utilities.cpp строка 73

Перекрестные ссылки nitro::FSPath::AddEndSlash() и nitro::DirectoryAbstraction::FindFirst().

Используется в DirectoryExists() и ForceCreateDirectory().

        {
                try
                {
                        nitro::DirectoryAbstraction             Directory;
                        std::string                             TmpDirectoryPath( nitro::FSPath::AddEndSlash( std::string( DirPath ) ) );

                        if( Directory.FindFirst( TmpDirectoryPath.c_str() ) )
                        {
                                return( false );
                        }

                        return( true );
                }
                catch( nitro::exception e )
                {
                        return( false );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "bool Directory::DirectoryExists( const char * DirPath )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

bool nitro::Directory::DirectoryExists ( const std::string &  DirPath  )  [static]

Проверяет существование папки.

Аргументы:
DirPath - Путь к папке чье существование проверяется. Наличие концевого слэша не требуется.
Возвращает:
true если директория существует, false если не существует.
Исключения:
nitro::exception Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле directory_utilities.cpp строка 97

Перекрестные ссылки nitro::exception::code(), DirectoryExists() и nitro::exception::what().

        {
                try
                {
                        return( DirectoryExists( DirPath.c_str() ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "Directory::DirectoryExists( const std::string & DirPath )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "Directory::DirectoryExists( const std::string & DirPath )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::Directory::ForceCreateDirectory ( const char *  DirPath  )  [static]

Функция принудительного создания директории. Например есть путь e:/1/2. Причем папки /1 не существует, тогда CreateDirectory вернет ошибку. Поэтому ForceCreateDirectory принудительно создает необходимые папки.

Аргументы:
DirPath - Путь к создаваемой директории. Концевой слэш может отсутствовать.
Исключения:
nitro::exception Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле directory_utilities.cpp строка 10

Перекрестные ссылки nitro::exception::code(), nitro::DirectoryAbstraction::CreateDirectory(), nitro::FSPath::DeleteEndSlash(), DirectoryExists(), nitro::FSPath::ExtractFilePath() и nitro::exception::what().

Используется в ForceCreateDirectory(), nitro::File::ForceCreateFile() и nitro::UnZIPAbstraction::UnZIPFile().

        {
                try
                {
                        char                    * SafePath;
                        SafePath = new char[ strlen( DirPath ) + 1 ];
                        // обрубаем концевой слэш если нужно
                        nitro::FSPath::DeleteEndSlash( DirPath , SafePath );

                        // произошла ошибка
                        // проверяем может быть директория создана раньше
                        if( DirectoryExists( ( const char * )SafePath ) )
                        {
                                // т.е. такая директория уже создана
                                // кстати тут обрабатывается такая ситуация - когда в функцию передан <drive_letter>:/
                                // тогда DirectoryExists вернет true для <drive_letter>:, т.к. она автоматом прибавляет / к пути
                                return;
                        }

                        // директория не была создана раньше следовательно идем выше по пути
                        char                    SubSafePath[ 4096 ];
                        if( std::string( nitro::FSPath::ExtractFilePath( SafePath , SubSafePath ) ) == SafePath )
                        {
                                // т.е. не удалось выделить имя файла
                                throw( nitro::exception( std::string( "An error occured while extracting file path from " ) + SafePath , 0 ) );
                        }
                        else
                        {
                                ForceCreateDirectory( ( const char * )SubSafePath );

                                DirectoryAbstraction::CreateDirectory( ( const char * )SafePath );

                                //директория создана
                        }

                        delete [] SafePath;
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "/* static */ void Directory::ForceCreateDirectory( const char * DirPath )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "/* static */ void Directory::ForceCreateDirectory( const char * DirPath )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::Directory::ForceCreateDirectory ( const std::string &  DirPath  )  [static]

Функция принудительного создания директории. Например есть путь e:/1/2. Причем папки /1 не существует, тогда CreateDirectory вернет ошибку. Поэтому ForceCreateDirectory принудительно создает необходимые папки.

Аргументы:
DirPath - Путь к создаваемой директории. Концевой слэш может отсутствовать.
Исключения:
nitro::exception - Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле directory_utilities.cpp строка 57

Перекрестные ссылки nitro::exception::code(), ForceCreateDirectory() и nitro::exception::what().

        {
                try
                {
                        ForceCreateDirectory( DirPath.c_str() );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "Directory::ForceCreateDirectory( const std::string & DirPath )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "Directory::ForceCreateDirectory( const std::string & DirPath )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:


Объявления и описания членов классов находятся в файлах:

Generated by  doxygen 1.6.1