本程序示例如何将多个文件合并成一个文件,并能够自分解。此技术在制作 安装程序时非常有用。我在本网站学到了此技术,并将他整理扩展,能够合并文 件和目录,个数不限。
核心程序包括一个合并文件类 CCombineFiles,一个分解文件的类 CExtractFiles 和一个表示文件或目录信息的数据类 FileInfo 文件和目录的信 息都由FileInfo类表示。此类定义如下: class FileInfo
{
public:
const FileInfo &operator = (const FileInfo &fi);
FileInfo(CString szFileName, UINT nFileSize, UINT nPos, char type = 0);
FileInfo();
virtual ~FileInfo();
public:
CString szFileName;
UINT nSize;
UINT nPos;
char type; // d --- directory , f --- file , other --- no define
};
合并文件类CCombineFiles定义如下:
class CCombineFiles
{
public:
bool Combine(CStringArray &fileList, CString szToFileName);
CCombineFiles(CString szExeFileName);
virtual ~CCombineFiles();
public:
bool WriteFileInfo(FileInfo fi, FILE *fp);
bool WriteString(CString szStr, FILE *fp);
bool WriteListInfo(CArray &fiList, FILE *fp, UINT nStartOffset);
bool CombineFile(CString szFileName, FILE *fp);
bool CombineDirectory(CString szDir, FILE *fp);
CString m_szExeFileName;
};