我必须澄清一个关于 tar 文件的疑问。即使这个文档对我也有很大帮助(如何在 C++ 中解析 tar 文件)......
但仍有一些问题要问..有没有办法知道 .tar 文件中的“FileType”。在您给定的数据中,我们只有文件的内容..但是假设我只想获取一个特定的文件,如任何 .html 文件(如果存在于 tar 文件中)..那么有什么办法吗? ??
我知道我需要处理文件类型(在我的情况下为 .html)。我怎么知道 tar 文件中是否存在任何 .html 文件?
我必须澄清一个关于 tar 文件的疑问。即使这个文档对我也有很大帮助(如何在 C++ 中解析 tar 文件)......
但仍有一些问题要问..有没有办法知道 .tar 文件中的“FileType”。在您给定的数据中,我们只有文件的内容..但是假设我只想获取一个特定的文件,如任何 .html 文件(如果存在于 tar 文件中)..那么有什么办法吗? ??
我知道我需要处理文件类型(在我的情况下为 .html)。我怎么知道 tar 文件中是否存在任何 .html 文件?
@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 中(在我的情况下 - 它可以是任何根据您的意愿)。
坦率地说,我可能会解析并解析“tar -tvf tarfile.tar”的结果,而不是从头开始编写一个 tar 解析器。然后,您可以处理搜索结果,搜索您要识别的任何文件。