2013-07-29 2 views
2

Я хочу знать файл типа html-файла, который присутствует в файле tar. Я сохранил tar-файл taris в буфере, и я знаю, что могу знать размер файла в буфере местоположения [124], но я хочу знать - (1.) Я хочу знать, что если файл присутствует в tar это HTML-файл? Любая идея, как это сделать? Я думаю, что я могу узнать файл Link Indicator (но я не уверен). может кто-нибудь объяснить, пожалуйста, как это сделать ??Что такое индикатор ссылки (тип файла) в дескрипторе tar

(2.) Однажды, если я уверен, что у меня есть файл html внутри tar-файла, тогда я хочу staotr содержимое этого html-файла в tar-файле.

Есть много других файлов также присутствует в файле смолы (не только файл HTML-пожалуйста внимание на этой линии, так что я не знаю loctaion из HTML-файла)

Любая идея, как этого добиться? ?

+0

Проверьте расширение '.html' filename? –

+0

Или используйте парсер, если вы не доверяете расширениям. Просто [не использовать регулярное выражение] (http://stackoverflow.com/a/1732454/1056003);) – nijansen

+0

@ Joachim жаль, что я не мог понять ??? вы имеете в виду, что мне нужно проверить индикатор ссылки, если файл имеет тип .html? не могли бы вы рассказать мне, какой индикатор ссылки действительно предназначен для? как я думаю, мы можем получить расширение файла (.html в моем случае) из индикатора ссылок. Или где вы просите меня проверить расширение .html? – Sss

ответ

0

А, вы имеете в виду поле typeflag. Нет, это не для что вид типа файла, это сказать, если файл является обычным файлом, каталог, жесткая связь, символьную ссылку, файл устройства и т.д.

вашей системе (если это POSIX-совместимый) должен имеют файл заголовка системы <tar.h> (обычно в /usr/include), который содержит эти флаги. Или вы можете увидеть official POSIX specification.

+0

, так что я думаю, что не так. Знаете ли вы какой-либо способ добиться своей цели? Как узнать о html-файле (есть также много других файлов) с помощью кода C++ (я могу получить доступ к файлу tar с использованием индексов буфера)? – Sss

+0

@ShekharSinghSHEKHAWAT Единственный способ проверить имена файлов и посмотреть окончание имен файлов, типичных для файлов HTML. –

+0

вы имеете в виду, что я должен проверять данные из буфера [0 до 100], который содержит имя файла, и если у меня есть .html, тогда я должен хранить содержимое этого файла. но я столкнулся с таким количеством других файлов, выполнив это. Как пропустить эти дополнительные файлы (даже у них разные размеры), чтобы получить содержимое .html-файлов? – Sss

0

@ Joachim спасибо за ваше предложение, наконец, я сделал это код, как показано ниже вы можете увидеть, если вы хотите -

символ * 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 в моем случае), и этот код предоставит нам его содержимое.