Робота з архівами GZip

Огляд

API Aspose.ZIP для .NET дає змогу створювати та керувати архівами GZip у ваших програмах без необхідності використовувати будь-які сторонні програми. API Aspose.ZIP надає клас  GZipArchive для роботи з архівами GZip. Цей клас надає різні методи для виконання операцій над архівами.

Алгоритм стиснення Gzip заснований на алгоритмі DEFLATE, який є комбінацією кодування LZ77 і Хаффмана.

Стиснути файл

У наведеному нижче прикладі коду показано, як стиснути файл за допомогою екземпляра GZipArchive.

1    using (GzipArchive archive = new GzipArchive())
2    {
3        archive.SetSource(dataDir + "data.bin");
4        archive.Save(dataDir + "archive.gz");
5    }

Відкрити архів GZIP

У наведеному нижче прикладі коду показано, як відкрити архів GZip.

 1    //Extracts the archive and copies extracted content to file stream.
 2    using (var archive = new GzipArchive(dataDir + "archive.gz"))
 3    {
 4        using (var extracted = File.Create(dataDir + "data.bin"))
 5        {
 6            var unpacked = archive.Open();
 7            byte[] b = new byte[8192];
 8            int bytesRead;
 9            while (0 < (bytesRead = unpacked.Read(b, 0, b.Length)))
10                extracted.Write(b, 0, bytesRead);
11        }
12    }

Витягти в потік пам’яті

У наведеному нижче прикладі коду показано, як відкрити архів із потоку та розпакувати його в MemoryStream.

1    //Open an archive from a stream and extract it to a MemoryStream
2    var ms = new MemoryStream();
3    using (GzipArchive archive = new GzipArchive(File.OpenRead(dataDir + "sample.gz")))
4    {
5        archive.Open().CopyTo(ms);
6        Console.WriteLine(archive.Name);
7    }

Зберегти в потік

У наведеному нижче прикладі коду показано, як відкрити та зберегти в Stream.

1    //Writes compressed data to http response stream.
2    var ms = new MemoryStream();
3    using (var archive = new GzipArchive())
4    {
5        archive.SetSource(new FileInfo(dataDir + "data.bin"));
6        archive.Save(ms);
7    }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.