伙计们,我最近在做libunrar
,但是当我使用RAR_OM_LIST
选项时出错了,我可以打印rar文件中的第一项,但是之后得到了ERAR_BAD_DATA
。下面是代码:
struct RAROpenArchiveData openArcData = {
.ArcName = (char *)"/Users/oxnz/Developer/Nanook/unrar/x.rar",
.OpenMode = RAR_OM_LIST,
};
HANDLE hArcData = RAROpenArchive(&openArcData);
if (openArcData.OpenResult == ERAR_SUCCESS) {
struct RARHeaderDataEx headerDataEx;
int ret;
while (ERAR_SUCCESS == (ret = RARReadHeaderEx(hArcData, &headerDataEx))) {
printf("file: [%s]\n", headerDataEx.FileName);
}
switch (ret) {
case ERAR_BAD_DATA:
printf("bad data\n");
break;
case ERAR_END_ARCHIVE:
printf("END OF ARCHIVE\n");
break;
default:
printf("unknown error: %d", ret);
break;
}
RARCloseArchive(hArcData);
}
如有任何资料,将不胜感激。提前谢谢。
发布于 2016-01-19 03:42:42
每次调用RARReadHeaderEx
之后,您都需要调用RARProcessFile
,即使只是跳过数据。例如。
while (ERAR_SUCCESS == (ret = RARReadHeaderEx(hArcData, &headerDataEx)))
{
printf("file: [%s]\n", headerDataEx.FileName);
if (ERAR_SUCCESS != (ret = RARProcessFile(hArcData, RAR_SKIP, NULL, NULL)))
break;
}
https://stackoverflow.com/questions/34868048
复制相似问题