2016-10-27 7 views
-2

Я хочу прочитать xml-файл или текстовый файл в zip-архиве, не извлекая его из архива. Могу ли я сделать это напрямую, не извлекая его из zip-архива?Могу ли я читать zip-архив с помощью wxwidgets?

+0

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

+0

В соответствии с ** [Руководством] (http://docs.wxwidgets.org/3.1/overview_archive.html) **, похоже, вы можете (очевидно, необходимо извлечь извлечения). – Galik

+0

Хорошо. Есть ли другой способ прочитать необходимый файл без извлечения из zip-архива? Помимо wxwidgets – sangz

ответ

0
wxZipInputStream zip(in); 

      while (entry.reset(zip.GetNextEntry()), entry.get() != NULL) { 
       wxString name = entry->GetName(); 
       name = strPageName.BeforeLast('\\') + wxFileName::GetPathSeparator() + name; 

        zip.OpenEntry(*entry.get()); 

        wxFileOutputStream file(name); 

        if (!file) { 
        wxLogError(_T("Can not create file '") + name + _T("'.")); 
        break; 
        } 

        zip.Read(file); 

Я пробовал использовать wxZipInputStream. Да, я могу читать файлы после извлечения из архива. Мне нравится знать, могу ли я читать эти файлы без извлечения из архива.

0
wxFileSystem::AddHandler(new wxZipFSHandler); 

wxFileSystem fs; 
wxFSFile *zip = fs.OpenFile("d:\\test.zip#zip:test.txt"); 
if(zip!=NULL) 
{ 
    wxInputStream *in = zip->GetStream(); 
    if (in != NULL) 
    { 
    wxFileOutputStream out("d:\\testout.txt"); 
    out.Write(*in); 
    out.Close(); 
    } 
    delete zip; 
} 

Да, мы можем прочитать zip-файл непосредственно из архива. Вышеприведенный примерный код.