Класс для работы с zip архивами. Подробнее...
#include <system/zip_abstraction.h>
Открытые члены | |
| ZIPAbstraction (void) | |
| ZIPAbstraction (const std::string &FilePath) | |
| void | Open (const std::string &FilePath) |
| void | AddFile (const std::string &FilePath, const nitro::BinaryData &LoadedFile, const std::string &RelFolderPath="") |
| void | AddFile (const std::string &FilePath, const std::string &RelFolderPath="") |
| void | Close (void) |
| virtual | ~ZIPAbstraction () |
Закрытые члены | |
| ZIPAbstraction (const ZIPAbstraction &) | |
| ZIPAbstraction | operator= (const ZIPAbstraction &) |
Закрытые данные | |
| void * | File |
Класс для работы с zip архивами.
См. определение в файле zip_abstraction.h строка 49
| nitro::ZIPAbstraction::ZIPAbstraction | ( | void | ) |
Конструктор.
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.cpp строка 27
Перекрестные ссылки nitro::exception::code() и nitro::exception::what().
: File( 0 ) { try { } catch( nitro::exception e ) { throw( nitro::exception( std::string( "ZIPAbstraction::CloseZIP( void )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "ZIPAbstraction::CloseZIP( void )::An error occured while unzipping file" ) , 1 ) ); } }

| nitro::ZIPAbstraction::ZIPAbstraction | ( | const std::string & | FilePath | ) |
Конструктор.
| FilePath | - Путь к загружаемому файлу. |
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.cpp строка 43
Перекрестные ссылки Close(), nitro::exception::code(), Open() и nitro::exception::what().
: File( 0 ) { try { Close(); Open( FilePath ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "ZIPAbstraction::ZIPAbstraction( const std::string & FilePath /* = NULL */ )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "ZIPAbstraction::ZIPAbstraction( const std::string & FilePath /* = NULL */ )::An error occured while unzipping file" ) , 1 ) ); } }

| nitro::ZIPAbstraction::~ZIPAbstraction | ( | ) | [virtual] |
Деструктор.
См. определение в файле zip_abstraction.cpp строка 194
Перекрестные ссылки Close().
{
try
{
Close();
}
catch( nitro::exception e )
{
}
catch( ... )
{
}
}

| nitro::ZIPAbstraction::ZIPAbstraction | ( | const ZIPAbstraction & | ) | [inline, private] |
Закрытый конструктор копирования.
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.h строка 221
{}
| void nitro::ZIPAbstraction::AddFile | ( | const std::string & | FilePath, | |
| const nitro::BinaryData & | LoadedFile, | |||
| const std::string & | RelFolderPath = "" | |||
| ) |
Добавление файла в ZIP.
| FilePath | - Путь к архивиремому файлу. | |
| LoadedFile | - Путь к загруженному файлу. | |
| RelFolderPath | - файл будет добавлен в архив по этому пути. |
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.cpp строка 97
Перекрестные ссылки nitro::FSPath::AddEndSlash(), nitro::exception::code(), nitro::FSPath::ExtractFileName(), nitro::BinaryData::GetBuffer(), nitro::BinaryData::GetBufferLength(), nitro::File::GetLastModified() и nitro::exception::what().
Используется в AddFile() и nitro::ZIPUtilities::ArchiveDirectory().
{
try
{
// сохраняем аттрибуты и время
zip_fileinfo zfi;
zfi.internal_fa = 0;
zfi.external_fa = 0;
tm LastModifiedDate = nitro::File::GetLastModified( FilePath );
zfi.dosDate = 0;
zfi.tmz_date.tm_year = LastModifiedDate.tm_year + 1900;
zfi.tmz_date.tm_mon = LastModifiedDate.tm_mon;
zfi.tmz_date.tm_mday = LastModifiedDate.tm_mday;
zfi.tmz_date.tm_hour = LastModifiedDate.tm_hour;
zfi.tmz_date.tm_min = LastModifiedDate.tm_min;
zfi.tmz_date.tm_sec = LastModifiedDate.tm_sec;
// загружаем зипуемый файл
std::string FileName;
if( RelFolderPath == "" )
{
FileName = nitro::FSPath::ExtractFileName( std::string( FilePath ) );
}
else
{
FileName = nitro::FSPath::AddEndSlash( std::string( RelFolderPath ) ) + nitro::FSPath::ExtractFileName( std::string( FilePath ) );
}
// открываем архив
if( zipOpenNewFileInZip( File , FileName.c_str() , & zfi ,
NULL , 0 , NULL , 0 ,
NULL , Z_DEFLATED , Z_DEFAULT_COMPRESSION ) != ZIP_OK )
{
throw( nitro::exception( std::string( "An error occured while opening zip file " ) + FileName , 1 ) );
}
if( zipWriteInFileInZip( File , LoadedFile.GetBuffer() , ( unsigned int )LoadedFile.GetBufferLength() ) != ZIP_OK )
{
throw( nitro::exception( std::string( "An error occured while saving data " ) + FilePath + " to zip file" , 1 ) );
}
zipCloseFileInZip( File );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "ZIPAbstraction::AddFile( const std::string & FilePath , const nitro::BinaryData & LoadedFile , const std::string & RelFolderPath /* = "" */ )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "ZIPAbstraction::AddFile( const std::string & FilePath , const nitro::BinaryData & LoadedFile , const std::string & RelFolderPath /* = "" */ )::An error occured while unzipping file" ) , 1 ) );
}
}

| void nitro::ZIPAbstraction::AddFile | ( | const std::string & | FilePath, | |
| const std::string & | RelFolderPath = "" | |||
| ) |
Добавление файла в ZIP.
| FilePath | - Путь к архивиремому файлу. | |
| RelFolderPath | - файл будет добавлен в архив по этому пути. |
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.cpp строка 153
Перекрестные ссылки AddFile(), nitro::exception::code(), nitro::File::LoadBinDataFromFile() и nitro::exception::what().
{
try
{
nitro::BinaryData LoadedFile;
nitro::File::LoadBinDataFromFile( LoadedFile , FilePath );
AddFile( FilePath , LoadedFile , RelFolderPath );
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "ZIPAbstraction::AddFile( const std::string & FilePath , const std::string & RelFolderPath /* = NULL */ )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "ZIPAbstraction::AddFile( const std::string & FilePath , const std::string & RelFolderPath /* = NULL */ )::An error occured while unzipping file" ) , 1 ) );
}
}

| void nitro::ZIPAbstraction::Close | ( | void | ) |
Закрытие ZIP-файла.
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.cpp строка 173
Перекрестные ссылки nitro::exception::code() и nitro::exception::what().
Используется в nitro::ZIPUtilities::ArchiveDirectory(), Open(), ZIPAbstraction() и ~ZIPAbstraction().
{
try
{
if( File ? zipClose( File , NULL ) : ZIP_OK != ZIP_OK )
{
throw( nitro::exception( std::string( "An error occured while closing zip file" ) , 1 ) );
}
File = NULL;
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "ZIPAbstraction::Close( void )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "ZIPAbstraction::Close( void )::An error occured while unzipping file" ) , 1 ) );
}
}

| void nitro::ZIPAbstraction::Open | ( | const std::string & | FilePath | ) |
Открытие ZIP-файла.
| FilePath | - Путь к открываемому ZIP-файлу. |
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.cpp строка 61
Перекрестные ссылки Close(), nitro::exception::code(), nitro::File::FileExists() и nitro::exception::what().
Используется в ZIPAbstraction().
{
try
{
Close();
if( FilePath == "" || FilePath.size() == 0 )
{
throw( nitro::exception( std::string( "Invalid file path" ) , 1 ) );
}
if( nitro::File::FileExists( FilePath ) == false )
{
if( ( File = zipOpen( FilePath.c_str() , 0 ) ) == NULL )
{
throw( nitro::exception( std::string( "File " ) + FilePath + " was not opened" , 1 ) );
}
}
else
{
if( ( File = zipOpen( FilePath.c_str() , 1 ) ) == NULL )
{
throw( nitro::exception( std::string( "File " ) + FilePath + " was not opened" , 1 ) );
}
}
}
catch( nitro::exception e )
{
throw( nitro::exception( std::string( "ZIPAbstraction::Open( const std::string & FilePath )::" ) + e.what() , e.code() ) );
}
catch( ... )
{
throw( nitro::exception( std::string( "ZIPAbstraction::Open( const std::string & FilePath )::An error occured while unzipping file" ) , 1 ) );
}
}

| ZIPAbstraction nitro::ZIPAbstraction::operator= | ( | const ZIPAbstraction & | ) | [inline, private] |
Закрытый оператор присваивания.
| nitro::exception | - Кидается исключение этого типа с описанием ошибки. |
См. определение в файле zip_abstraction.h строка 241
{return( *this );}
void* nitro::ZIPAbstraction::File [private] |
Загруженный файл.
См. определение в файле zip_abstraction.h строка 205
1.6.1