ZIP и распаковка папок в .NET
Contents
[
Hide
Show
]API Aspose.ZIP позволяет сжимать и распаковывать файлы, не беспокоясь о базовой файловой структуре. В этой статье показана работа со сжатием одного и нескольких файлов.
Сжатие каталога
Сжатие содержимого каталога
Шаги: Сжатие содержимого каталога в ZIP-файлы с помощью C#< /а>
- Определите каталог, содержащий файлы, подлежащие сжатию.
- Откройте два файловых потока для выходных ZIP-файлов с помощью FileMode.Create.
- Создайте экземпляр класса Archive.
- С помощью метода CreateEntries добавьте в архив все файлы и папки из указанного каталога.
- Сохраните сжатое содержимое каталога в несколько ZIP-файлов, используя метод Save.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 string dataDir = RunExamples.GetDataDir_Data();
3
4 using (FileStream zipFile = File.Open(dataDir + "CompressDirectory_out.zip", FileMode.Create))
5 {
6 using (FileStream zipFile2 = File.Open(dataDir + "CompressDirectory2_out.zip", FileMode.Create))
7 {
8 using (Archive archive = new Archive())
9 {
10 DirectoryInfo corpus = new DirectoryInfo(dataDir + "CanterburyCorpus");
11 archive.CreateEntries(corpus);
12 archive.Save(zipFile);
13 archive.Save(zipFile2);
14 }
15 }
16 }
Извлечение сжатого архива каталогов
Шаги: Извлечение сжатого архива каталогов </а>
- Откройте поток ZIP-файлов с помощью FileMode.Open.
- Создайте экземпляр класса Archive, передав поток ZIP-файлов.
- Извлеките содержимое сжатого архива в указанную директорию с помощью ExtractToDirectory.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressDirectory_out.zip", FileMode.Open))
3 {
4 using (var archive = new Archive(zipFile))
5 {
6 archive.ExtractToDirectory(dataDir + "DecompressFolder_out");
7 }
8 }
Сжатие файлов по информации о файле
Шаги: Сжатие файлов по информации о файле </а>
- Откройте поток файлов для выходного ZIP-файла с помощью FileMode.Create.
- Создайте объекты FileInfo для файлов, которые вы хотите сжать.
- Создайте экземпляр класса Archive.
- Используйте метод CreateEntry, чтобы добавить каждый файл в архив.
- Сохраните архив методом Save с дополнительными опциями сохранения, такими как установка кодировки.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressFilesByFileInfo_out.zip", FileMode.Create))
3 {
4 FileInfo fi1 = new FileInfo(dataDir + "alice29.txt");
5 FileInfo fi2 = new FileInfo(dataDir + "fields.c");
6
7 using (var archive = new Archive())
8 {
9 archive.CreateEntry("alice29.txt", fi1);
10 archive.CreateEntry("fields.c", fi2);
11 archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
12 }
13 }
Извлечение архивов с различными входными архивами
Шаги: Извлечение архивов с другой записью Пароли
- Откройте поток ZIP-файлов с помощью FileMode.Open.
- Создайте экземпляр класса Archive, передав поток ZIP-файлов.
- Извлеките первую запись из архива, указав для нее определенный пароль с помощью метода Extract.
- Извлеките вторую запись с другим паролем, сохранив ее в отдельный выходной файл.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "\\different_password.zip", FileMode.Open))
3 {
4 using (Archive archive = new Archive(zipFile))
5 {
6 archive.Entries[0].Extract(dataDir + "alice29_extracted_pass_out.txt", "first_pass");
7 archive.Entries[1].Extract(dataDir + "asyoulik_extracted_pass_out.txt", "second_pass");
8 }
9 }