Распаковка архивов с использованием c# - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть этот код для распаковки

try
{
    long currentBytes = 0;
    long totalBytes = 0;
    long sizeMaximo = 0;
    long currentFinal = 0;

    ArchivoFtp.BorrarDirectorioArchivo(nameDirectoryOrigin, true);

    nombreDirectorioOrigen = Path.GetFullPath(nameDirectoryOrigin);


        using (ZipArchive archive = ZipFile.OpenRead(nameDirectoryOrigin+nameArchiveDescompress))
        {
             totalBytes = archive.Entries.Sum(e => e.Length);
             currentBytes = 0;

            if (totalBytes > 2147483647)
            {
                sizeMaximo = totalBytes / 1024;
            }
            else
            {
                sizeMaximo = totalBytes;
            }

            progressBar.Invoke(
            (MethodInvoker)(() => progressBar.Maximum = Convert.ToInt32(sizeMaximo)));

            foreach (ZipArchiveEntry entry in archive.Entries)
            {                        
                string fileName = Path.Combine(nameDirectoryDestiny,entry.FullName);                        
                Directory.CreateDirectory(Path.GetDirectoryName(fileName));
                using (Stream inputStream = entry.Open())
                using (Stream outputStream = File.OpenWrite(fileName))
                {
                    Stream progressStream = new StreamWithProgress(outputStream, null,
                        new BasicProgress<int>(i =>
                        {
                            currentBytes += i;

                        }));

                    inputStream.CopyTo(progressStream);
                    if (totalBytes > 2147483647)
                    {
                        currentFinal = currentBytes / 1024;
                    }
                    else
                    {
                        currentFinal = currentBytes;
                    }
                    ArchivoFtp.CalcularPorcentajeOperacion(currentFinal, sizeMaximo, label, mensajePreProceso);

                    progressBar.Invoke(
                           (MethodInvoker)(() => progressBar.Value = Convert.ToInt32(currentFinal)));
                }

                File.SetLastWriteTime(fileName, entry.LastWriteTime.LocalDateTime);
            }
        }
        label.Invoke(
                (MethodInvoker)(() => label.Text = mensajePostProceso));
    }
catch(Exception e)
{
    MessageBox.Show("Ha ocurrido un error: " + e);
}

Но у меня возникла проблема в этом пункте

string fileName = Path.Combine(nombreDirectorioDestino,entry.FullName);                                                    
Directory.CreateDirectory(Path.GetDirectoryName(fileName));

Я распаковываю архив, в котором есть папки, и внутри этих папок есть архивы, проблема в том, что я не могу найти доступ к этому архиву.

Кто-нибудь имеет представление о том, как получить доступ?

Мне нужно распаковать папки и архивы в папки

Vb сказать мне: не удается найти часть пути

Я могу понять, что в нем отсутствует файл, который находится внутри этого файла. не представляет его.

Спасибо,

...