В этом пошаговом руководстве вы узнаете, как создать ZIP-файл в памяти на C#. Вам необходимо выполнить следующие простые шаги, чтобы иметь возможность создать ZIP-архив в памяти.
Шаги по созданию ZIP-файла в памяти на С#
- Добавьте Aspose.ZIP for .NET ссылку на пакет NuGet в решение.
- Добавьте оператор Aspose.Zip в файл кода Program.cs.
- Примените лицензию для Aspose.ZIP API, используя метод License.SetLicense.
- Получите один или все файлы из папки, расположенной на диске, и сохраните их пути в массиве строк.
- Создайте объект Archive Class в памяти.
- Для каждого файла создайте узел ArchiveEntry в ZIP-архиве.
- Сохраните или скопируйте экземпляр ZIP-архива в MemoryStream.
Следующий пример кода C# можно использовать в приложении .NET, чтобы сжать все файлы в папке на диске в ZIP file format, а затем сохранить ZIP-файл в объекте потока памяти.
Код для создания ZIP-файла в памяти на С#
using System.IO; | |
// Following namespace is required to Create ZIP File in Memory | |
using Aspose.Zip; | |
namespace CreateZipFileInMemory | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
License AsposeZipLicense = new License(); | |
// Load license from file system into memory stream | |
using (MemoryStream stream = new MemoryStream(File.ReadAllBytes("path to license.lic"))) | |
{ | |
// Set license prior to creating ZIP file in memory | |
AsposeZipLicense.SetLicense(stream); | |
} | |
#region C# code to create ZIP archive in memory | |
// Create MemoryStream instance | |
using (MemoryStream zipFileInMemory = new MemoryStream()) | |
{ | |
// Create empty Archive object for ZIP file | |
using (Aspose.Zip.Archive zipArchive = new Aspose.Zip.Archive()) | |
{ | |
// Get all files from a Folder and store their paths in string Array | |
string[] filesArray = Directory.GetFiles("ZIP all Files\\", "*.*", SearchOption.TopDirectoryOnly); | |
// Loop through the Array and create an ArchiveEntry against each file within the ZIP Archive | |
foreach (string fileDiskPath in filesArray) | |
{ | |
string[] folders = fileDiskPath.Split(new char[] { '\\' }); | |
string fileName = folders[folders.Length - 1]; | |
zipArchive.CreateEntry(fileName, fileDiskPath); | |
} | |
// Call Save method to create ZIP Archive in memory | |
zipArchive.Save(zipFileInMemory); | |
} | |
} | |
#endregion | |
} | |
} | |
} |
Таким образом, этот С# создает zip-файл в консольном приложении памяти, по существу, поможет вам преобразовать папку в формат ZIP и записать все содержимое папки в память в сжатом формате. После этого вы можете заново создать ZIP-файл из MemoryStream C# и сохранить на диск. После воссоздания архива в файловой системе вы можете извлечь ZIP-файл с помощью С# кодировать.