我必须澄清有关tar文件的一个疑问。即使这个文档对我有很大帮助(How to parse a tar file in C++)....
但仍有一些问题要问..有没有办法知道" FileType"在.tar文件中。在你给定的数据中,我们只有文件的内容。但是假设我想只得到任何.html文件的特定文件(如果存在于tar文件中)。那么有什么方法可以做到这一点吗? ??
我知道我需要处理文件类型(在我的情况下是.html)..我怎么知道如果tar文件中存在任何.html文件?
答案 0 :(得分:1)
@David我已经完成了你可以看到下面的代码如果你愿意这样做 -
char* StartPosition;
//char *check;
size_t skip= 0;
char HtmlFileContents [200000];
char contents [8000];
do
{
int SizeOfFile = CreateOctalToInteger(&buffer[skip+124],11);
size_t distance= ((SizeOfFile%512) ? SizeOfFile + 512 - (SizeOfFile%512) : SizeOfFile );
skip += distance + 512;
memcpy(contents,&buffer[skip],100);
if (StartPosition=strstr(contents,".html"))
{
MessageBox(m_hwndPreview,L"finally string is copied",L"BTN WND6",MB_ICONINFORMATION);
int SizeOfFile = CreateOctalToInteger(&buffer[skip+124],11);
memcpy(HtmlFileContents,&buffer[skip+512],SizeOfFile);
break;
}
}
while(strcmp(contents,".html") != NULL);
现在我们可以使用该文件的文件扩展名来获取html文件或任何我们希望的文件。我的代码将复制该文件的内容,并可以存储在HtmlFileContents中(在我的情况下 - 根据您的意愿,它可能是任何内容)。
答案 1 :(得分:0)
坦率地说,我可能会解析并解析“tar -tvf tarfile.tar”的结果,而不是从头开始编写tar解析器。然后,您可以处理结果,搜索您尝试识别的文件。