1

我必须澄清一个关于 tar 文件的疑问。即使这个文档对我也有很大帮助(如何在 C++ 中解析 tar 文件)......

但仍有一些问题要问..有没有办法知道 .tar 文件中的“FileType”。在您给定的数据中,我们只有文件的内容..但是假设我只想获取一个特定的文件,如任何 .html 文件(如果存在于 tar 文件中)..那么有什么办法吗? ??

我知道我需要处理文件类型(在我的情况下为 .html)。我怎么知道 tar 文件中是否存在任何 .html 文件?

4

2 回答 2

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 中(在我的情况下 - 它可以是任何根据您的意愿)。

于 2013-07-29T16:06:04.480 回答
0

坦率地说,我可能会解析并解析“tar -tvf tarfile.tar”的结果,而不是从头开始编写一个 tar 解析器。然后,您可以处理搜索结果,搜索您要识别的任何文件。

于 2013-07-13T22:59:41.697 回答