什么是tar解析器中的链接指示符(文件类型)

时间:2013-07-29 07:11:26

标签: c++ html-parsing tarfile

我想知道tar文件中存在的html文件的文件类型。我已将theis tar文件存储在缓冲区中,我知道我可以知道位置缓冲区[124]中文件的大小,但我想知道的是 - (1.)我想知道如果tar中存在的文件是HTML文件?知道怎么做吗?我想我可以知道链接指示器的文件形式(但我不确定)。任何人都可以解释一下如何做到这一点??

(2。)如果我确定我在tar文件中有html文件,那么我想在tar文件中查看这些html文件的内容。

tar文件中还有很多其他文件(不仅是html文件 - 请注意这一行,所以我不知道html文件的位置)

任何想法如何实现这个?

2 个答案:

答案 0 :(得分:0)

啊,你的意思是typeflag字段。不,它不是那种类型的文件类型,它是告诉文件是常规文件,目录,硬链接,软链接,设备专用文件等。

您的系统(如果它符合POSIX)应该有一个包含这些标志的<tar.h>系统头文件(通常在/usr/include中)。或者你可以看到official POSIX specification

答案 1 :(得分:0)

@ Joachim感谢您的建议,最后我已经完成了代码,如下所示,您可以看看 -

char * StartPosition;

    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);

它可以用于存储在tar文件中的每个文件。我们只需要放置文件扩展名(在我的情况下为.html),这段代码将为我们提供内容。