Класс алгоритмов работы с директориями. Подробнее...
#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 | - Путь к папке чье существование проверяется. Наличие концевого слэша не требуется. |
| 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 | - Путь к папке чье существование проверяется. Наличие концевого слэша не требуется. |
| 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 ) );
}
}

1.6.1