none
MODO DE EXTRAÇÃO DE ARQUIVOS RRS feed

  • Pergunta

  • Boa tarde amigos, 

    Visando agilizar um processo, optei em extrair arquivos do tipo '.rar' ao invés de '.zip'. (Arquivos do tipo .rar tem uma compactação melhor dos arquivos). Porém meus problemas começam na hora de extrair. Segue exemplos abaixo;

    #EXTRAIR .ZIP

    // ESSA FUNÇÃO FUNCIONA PERFEITAMENTE, EXTRAI TODOS ARQUIVOS E SUBPASTAS.
    
                    string path = Application.StartupPath + @"\Data";
                    string folder = path + "\\" + "update_temp";
    
                    string destinoZIP = folder + "\\" + "extract-temp";
                    if (!Directory.Exists(destinoZIP))
                    {
                        Directory.Exists(destinoZIP);
                    }
    
                    string arquivoZIP = folder + "\\" + "UP_update.zip";
                    if (!Directory.Exists(folder))
                    {
                        Directory.CreateDirectory(folder);
                    }
    
                    using (ZipFile zip1 = ZipFile.Read(arquivoZIP))
                    {
                        foreach (ZipEntry eZip in zip1)
                        {
                            eZip.Extract(destinoZIP, ExtractExistingFileAction.OverwriteSilently);
                        }
                    }

    #EXTRAIR .RAR

    // ESSA FUNÇÃO NÃO EXTRAI TODOS ARQUIVOS, APENAS ALGUNS E TEM ACESSO NEGADO À "SUBPASTAS".
    
                    RarArchive arquivo = RarArchive.Open(Application.StartupPath + @"\Data\update_temp\UP_update.rar");
                    foreach (RarArchiveEntry item in arquivo.Entries)
                    {
                        try
                        {
                            string nomeArquivo = Path.GetFileName(item.FilePath);
                            string rotaArquivo = Application.StartupPath + @"\Data\update_temp\extract_update" +
                            (Path.GetFullPath(item.FilePath).Replace(nomeArquivo, "").Replace(Application.StartupPath, ""));
    
                            if (!Directory.Exists(rotaArquivo))
                            {
                                Directory.CreateDirectory(rotaArquivo);
                            }
                            item.WriteToFile(rotaArquivo + nomeArquivo, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
                            System.Threading.Thread.Sleep(3000);
                            txtLog.BeginInvoke((MethodInvoker)delegate { txtLog.Text = "Êxito! Arquivos preparados para atualização."; });
                            pbBaixarAtualizacao.BeginInvoke((MethodInvoker)delegate { pbBaixarAtualizacao.Visible = false; });
                            btAtualizarDataclassic.BeginInvoke((MethodInvoker)delegate { btAtualizarDataclassic.Enabled = true; });
    
                        }
                        catch(Exception)
                        {
                            // txtLog.BeginInvoke((MethodInvoker)delegate { txtLog.Text = ex.Message; });
                            return;
                        }
                    }

    Gostaria de saber qual está sendo a diferença entre as duas funções? Observei que na primeira opção (extrair .zip), tem um item interessante, 

    eZip.Extract(destinoZIP, ExtractExistingFileAction.OverwriteSilently); // = substituir silenciosamente

    Não sei se isso faz alguma diferença, mas chamou minha atenção. Outro ponto importante é o fato do projeto estar dentro de uma pasta do DROPBOX, que é atualizada o tempo inteiro, para manter sincronizado com a nuvem. Mas quando tento extrair um arquivo .ZIP, mesmo que esteja dentro da pasta do DROPBOX, ele extrai sem nenhum problema. Já com arquivo .RAR, não extrai todos arquivos, logo nos primeiros arquivos ele já trava no "catch" da função. :/

    O quê posso fazer pessoal? Preciso fazer esse sistema funcionar. Agradeço desde já à todos!

    Bom dia!


    sexta-feira, 7 de outubro de 2016 13:43

Respostas

  • Bom dia aprendiz.developer,

    Neste link há um projeto open source com uma solução para extrair arquivos .rar.

    Por gentileza, verifique se ajuda.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 10 de outubro de 2016 14:44
    Moderador

Todas as Respostas

  • Bom dia aprendiz.developer,

    Neste link há um projeto open source com uma solução para extrair arquivos .rar.

    Por gentileza, verifique se ajuda.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 10 de outubro de 2016 14:44
    Moderador
  • Devido a falta de resposta
    do usuário, esta thread
    está sendo fechada.
    Caso este problema ainda
    esteja ocorrendo,
    por gentileza, abrir uma
    nova thread.

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 11 de outubro de 2016 16:50
    Moderador