Создать GZip на С#

Архивы GZip (.gz) используются для сжатия одного или нескольких файлов с использованием алгоритма сжатия GNU zip. Он обычно используется для сжатия файлов в операционных системах UNIX. В этой статье вы узнаете, как программно сжимать файлы с помощью GZip (.gz) на C#. Кроме того, в статье также будет рассказано, как распаковывать архивы GZip на C#.

C# API для сжатия и распаковки файлов с использованием GZip

Для сжатия и распаковки файлов с помощью GZip мы будем использовать Aspose.ZIP для .NET. Это мощный API, который позволяет работать с популярными форматами архивов, включая ZIP, 7z, GZip и т. д. Вы можете либо скачать API, либо установить его с помощью [NuGet]. 8.

PM> Install-Package Aspose.Zip

Сжать файлы с помощью GZip в C#

Ниже приведены шаги по сжатию файлов с помощью GZip в C#.

В следующем примере кода показано, как сжимать файлы в GZip на C#.

using (GzipArchive archive = new GzipArchive())
{
    // установить источник
    archive.SetSource("data.bin");
    
    // создать архив
    archive.Save("archive.gz");
}

Распаковать архив GZip в C#

Ниже приведены шаги по распаковке архива GZip на C# с помощью Aspose.ZIP для .NET.

  • Создайте объект класса GzipArchive и инициализируйте его, указав путь к архиву GZip.
  • Создайте файл для извлеченного содержимого с помощью метода File.Create(String).
  • Откройте GZip для извлечения с помощью метода GZipArchive.Open().
  • Прочитайте извлеченный контент и запишите его в файл.

В следующем примере кода показано, как распаковать архив GZip с помощью C#.

// загрузить архив GZip
using (var archive = new GzipArchive("archive.gz"))
{
    // создать файл
    using (var extracted = File.Create("data.bin"))
    {
        // открыть архив
        var unpacked = archive.Open();
        byte[] b = new byte[8192];
        int bytesRead;
        
        // записать в файл
        while (0 < (bytesRead = unpacked.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

Извлечь архив GZip в поток на C#

Вы также можете извлечь архив GZip в объект потока памяти. Ниже приведены шаги для выполнения этой операции.

  • Создайте новый объект MemoryStream.
  • Создайте объект класса GzipArchive и инициализируйте его, указав путь к архиву GZip.
  • Извлеките GZip и скопируйте в поток памяти, используя метод GZipArchive.Open().CopyTo(MemoryStream).

В следующем примере кода показано, как извлечь архив GZip в поток памяти с помощью C#.

// создать поток памяти
var ms = new MemoryStream();

// загрузить архив GZip
using (GzipArchive archive = new GzipArchive(File.OpenRead("sample.gz")))
{
    // извлечь и скопировать в поток памяти
    archive.Open().CopyTo(ms);
    Console.WriteLine(archive.Name);
}

Получите бесплатную лицензию API

Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.

Вывод

В этой статье вы узнали, как сжимать или распаковывать файлы с помощью GZip в C#. Кроме того, вы видели, как извлечь GZip для потоковой передачи программно. Вы можете узнать больше об Aspose.ZIP для .NET, используя документацию. Кроме того, вы можете связаться с нами, чтобы поделиться своими вопросами через наш форум.

Смотрите также