bzip.h

来自「手机数据备份软件」· C头文件 代码 · 共 75 行

H
75
字号
// BZIP.H: INTERFACE FOR THE CBZIP CLASS.
//      A FREE COMPRESS/DECOMPRESS SOFTWARE LIKE WINZIP 
//      BY YANXINHAI YANXH@MIC.COM.TW
// PLS LET ME KNOW IF YOU FIND ANY BUGS ABOUT IT. :)
//////////////////////////////////////////////////////////////////////
///////////////////////NOTICE/////////////////////////////////////////
//
// FUNCTION: 
//     1.IMPLEMENT SIGLE OR MULTIPLE FILE COMPRESS AND DECOMPRESS
//     2.IMPLEMENT FILE TO BUFFER COMPRESS/DECOMPRESS
//     3.IMPLEMENT FIRST LEVEL EMPTY DIRECTORY COMPRESS/DECOMPRESS
//     4.IMPLEMENT BUFFER TO BUFFER COMPRESS/DECOMPRESS
//     5.IMPLEMENT DIRECTORY COMPRESS/DECOMPRESS (NEW)
// VERSION: 1.0   CREATE TIME: 2002-07-18
// VERSION: 1.1   MODIFIED TIME:2002-7-22 ADD DIRECTORY COMPRESS/DECOMPRESS
//////////////////////////////////////////////////////////////////////
#ifndef _BZIP_H_
#define _BZIP_H_

#include "File.h"
#include "bzlib.h"
//////////////////////////////////////////////////////////////////////
//------------------ Data structure defined--------------------------
typedef struct
{
	DWORD	  dwOriginFileSize;         //Original size of file
	DWORD     dwZipFileSize;            //Compressed size of file
	DWORD     dwFileAttributes;         //attributes of file
	FILETIME  ftCreateTime;             //Create time of file 
	FILETIME  ftLastModifiedTime;		//Last Written time of file
	FILETIME  ftLastAccessedTime;		//Last Accessed time of file
	WORD	  wRealFilePathNameLen;	    //Real size of full-path name
	TCHAR      szFilePathName[MAX_PATH]; //buffer for file path name
}BZFILEDATA,*LPBZFILEDATA;
//-------------------Data Structure End------------------------------

///////////////////////////////////////////////////////////////////////
//------------------Class define--------------------------------
class CBzip  
{
public:
///////FILE/DIRECTORY Operation/////////
	BOOL Initialize(LPCTSTR szBzipDllName);
	virtual	BOOL AddToArchive(CFile &cTargetFile,BZFILEDATA &pBFHeader);
	BOOL AddDirToArchive(CFile&cFile ,LPCTSTR szDirName);
	virtual BOOL ExtractArchive(LPCTSTR szZipFileName);
	BOOL DeCompress(LPCSTR szSource,LPCSTR szTarget);
	BOOL Compress(LPCSTR szSource,LPCSTR szTarget,int nLevel = 9);
	BOOL BufferDeCompress(char *szDestBuf, UINT *nDestLen, char *szSource, UINT nSourceLen);
	BOOL BufferCompress(char * szDestBuf,UINT *nDestLen,char *szSource,UINT nSourceLen,int nLevel = 9);
	BOOL ZipFileToBuffer(LPCSTR szFileName, char *buffer,int& nLen);
	BOOL ExtractBufferToFile(LPCTSTR szFileName,char *buffer,UINT nLen,BZFILEDATA *pszFileBuffer=NULL);
	BOOL WriteFileToZip(LPCTSTR szSource,CFile &cTarget);
	BOOL IsExistedDirectory(LPCTSTR szDirectory);
	BOOL IsEmptyDirectory(LPCTSTR szDirectory);
protected:	
	virtual void OnExtractProgress( LPCTSTR szExtractFile,DWORD nErr);	
	BOOL CreateDir(LPCTSTR szDirName);
public:	
	CBzip();
	virtual ~CBzip();
	BOOL m_FirstDirFlag;
private:
	HINSTANCE m_hDllInstance;
	BOOL m_bHasZipFlag;
	void * (WINAPI *bzopen)(const char *,const char *);
	int	   (WINAPI *bzread)(void *,void *,int );
	int	   (WINAPI *bzwrite)(void *,void *,int );
	void   (WINAPI *bzclose)(void * );
	int    (WINAPI *bzBuffToBuffCompress)( char*,unsigned int*,char*,unsigned int,int,int,int);
    int    (WINAPI *bzBuffToBuffDecompress) ( char*,unsigned int*,char*, unsigned int,int,int);
};
//------------------Class End--------------------------------
#endif //_BZIP_H_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?