Архивы GZip (.gz) используются для сжатия одного или нескольких файлов с использованием алгоритма сжатия GNU zip. Он обычно используется для сжатия файлов в операционных системах UNIX. В этой статье вы узнаете, как программно сжимать файлы с помощью GZip (.gz) на C#. Кроме того, в статье также будет рассказано, как распаковывать архивы GZip на C#.
- .NET API для сжатия и распаковки файлов с помощью GZip
- Сжать файлы с помощью GZip в C#
- Распаковать архив GZip в 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#.
- Создайте объект класса GzipArchive.
- Используйте метод GzipArchive.SetSource(String), чтобы добавить файл в архив.
- Создайте архив GZip, используя метод GzipArchive.Save(String).
В следующем примере кода показано, как сжимать файлы в 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, используя документацию. Кроме того, вы можете связаться с нами, чтобы поделиться своими вопросами через наш форум.