Вопрос:

Я хочу распаковать файлы .7z без установки 7zip

c# zip 7zip compression

2398 просмотра

3 ответа

12 Репутация автора

Я хочу распаковать файлы .7z, которые я загружаю с веб-сервера. Я уже искал решение, но нашел только где-то, что мне нужно установить 7zip.

Есть ли простой способ распаковать эти файлы?

У меня уже есть «foreach», который перебирает элементы в списке, содержащем имена файлов.

Автор: DERYANNEK Источник Размещён: 31.12.2015 02:58

Ответы (3)


2 плюса

4274 Репутация автора

Решение

Лично у меня был хороший опыт работы с библиотекой SevenZipSharp. https://sevenzipsharp.codeplex.com/

Пример кода для извлечения / распаковки:

using (var tmp = new SevenZipExtractor(@"d:\Temp\7z465_extra.7z"))
{
       for (int i = 0; i < tmp.ArchiveFileData.Count; i++)
       {
             tmp.ExtractFiles(@"d:\Temp\Result\", tmp.ArchiveFileData[i].Index);
       }
}

Просто поместите необходимые DLL-файлы из 7zip и эту библиотеку в папку с программой, и все готово. Следовательно, вам не нужно явно устанавливать 7zip, вам просто нужны библиотеки.

Автор: Maximilian Gerhardt Размещён: 31.12.2015 03:15

3 плюса

13995 Репутация автора

Я только что попробовал новый SharpCompress и нашел его отличным, если вы не заботитесь о типе файла (например, это может быть 7z / zip / rar).

using (var archive = ArchiveFactory.Open(compressedFile))
{
    foreach (var entry in archive.Entries)
    {
        if (!entry.IsDirectory)
            entry.WriteToDirectory(@"C:\Temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
    }
}
Автор: Aximili Размещён: 14.02.2017 05:57

0 плюса

3 Репутация автора

Распакуйте файл .7z с помощью ядра .Net 2.2 Загрузите SharpCompress (0.23.0) из nuget.

static void SharpCompressEx(string sevenZPath)
    {
        using (Stream stream = File.OpenRead(sevenZPath))
        {
            using (var archive = ArchiveFactory.Open(stream))
            {
                foreach (var entry in archive.Entries)
                {
                    if (!entry.IsDirectory)
                        entry.WriteToDirectory(@"C:\Temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
                }
            }
        }
    }
Автор: Sandip Размещён: 13.06.2019 04:43
Вопросы из категории :
32x32