CUnrarDLL 1.0 - 基于 MFC 的 UnRAR 类






4.69/5 (9投票s)
2005年8月3日
2分钟阅读

86042

8881
一个易于使用的基于 unrar.dll 的类。
引言
在我的一个最新项目中,我一直在研究现有的解压缩类,用于 Zip 文件。我注意到,对于某些文件,RAR 具有更好的压缩比,并且现有的 DLL 本身处理一切,包括最新版本的 RAR 格式。
该类如何使用 'unrar.dll'?
Unrar.dll 由 RarLabs 免费分发并正式发布。它是现有应用程序用来操作 RAR 归档文件的接口。在该类中,从 DLL 导出了五个函数并使用它们。
HANDLE (WINAPI *OpenArchiveEx)(RAROpenArchiveDataEx *pArchiveData); int (WINAPI *CloseArchive)(HANDLE hArcData); int (WINAPI *ReadRARHeader)(HANDLE hArcData, RARHeaderData *pHeaderData); int (WINAPI *ProcessRARFile)(HANDLE hArcData, int iOperation, char* strDestFolder, char* strDestName); int (WINAPI *ReadRARHeaderEx)(HANDLE hArcData, struct RARHeaderDataEx *HeaderData);
OpenArchiveEx
与 'RAROpenArchiveDataEx
' 结构一起使用,以获取打开的归档文件的句柄(如果成功)。然后可以在后续的 DLL 调用中使用它。 ReadRARHeader
是我在核心 UnRAR 函数中使用的函数。它用于处理 RAR 的标头,以获取有关 RAR 中包含的文件信息。它将 RARHeaderData
结构填充信息,包括文件名、打包大小、解包大小等。 ProcessRARFile
用于对 RAR 归档文件中的当前文件执行操作。这可以是 测试、提取 或完全 跳过 该文件。调用后,它将移动到归档文件中的下一个文件。 CloseArchive
用于关闭从 OpenArchiveEx
获得的 HANDLE
。 ReadRARHeaderEx
与 ReadRARHeader
相同,但包含额外信息,例如 Unicode 文件名。
工作原理
CUnrarDLL
将 'unrar.dll'(可从 WinRAR 网站 免费获得)及其接口封装到一个简洁、易于使用的 MFC 类中。解压 RAR 归档文件变得前所未有的简单。
这是一个例子
// Define an UnRAR object CUnrarDLL unrarObj; // Load the RAR file unrarObj.OpenRARFile("MyContent.rar"); // Set the output directory unrarObj.SetOutputDirectory("C:\\Output"); // UnRAR the archive unrarObj.UnRARArchive();
这些都很好,但是如果你想在提取之前了解归档文件中的更多信息呢?没问题。有两种方法可以获取信息。第一种是在调用 'OpenRARFile
' 时自动完成的。打开后,CUnrarDLL
将所有文件及其打包和解包大小加载到向量中,如下所示可以检查:
// Open the RAR file unrarObj.OpenRARFile("MyContent.rar"); // String to show CString fileInfo; // File CUnrarFile curFile; // Loop through the files and show them for (int i = 0; i < unrarObj.GetNumberOfFiles(); i++) { curFile = unrarObj.GetFileAt(i); fileInfo.Format("File name: %s\nPacked size:" " %I64d\nUnpacked size: %I64d", curFile.fileName, curFile.packSize, curFile.unpackSize); MessageBox(fileInfo); }
另一种已实现的方法是 'ListFileNames
',它会将文件名列表放入 CStringArray
中。
更新
- 2005 年 8 月 4 日:更新了文章。
- 2005 年 8 月 3 日:初始发布。