Есть List
Проблема в том что эти файлы в разных папках. Можно как то скопировать их в новую папку, а потом их упаковать, но количество этих файлов очень велико, так неудобно.
Есть ли какой нибудь способ?
Код создания архива:
using (ZipFile zip = new ZipFile())
{
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.AddDirectory(@"C:\project\");
zip.AddFile(@"c:\Temp\Import.csv");
zip.Save(@"C:\Temp\PackedProject.zip");
}
Ответ
Приведенный вами код, к сожалению, не работоспособен. Класс ZipFile есть в библиотеке классов, но он статический и не рекомендован Microsoft для использования в приложениях для Windows Store, там же рекомендовано использовать класс ZipArchive. MSDN
Если полные имена (путь+имя) файлов уже содержатся в List
using System;
using System.IO;
using System.IO.Compression;
using (FileStream zipToOpen = new FileStream(@"newArchive.zip", FileMode.OpenOrCreate))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
foreach (string fileName in fileNames)
{
FileInfo fi = new FileInfo(fileName)
ZipArchiveEntry fileEntry = archive.CreateEntryFromFile(fi.FullName,fi.Name,CompressionLevel.Optimal);
}
}
}
как-то так. Более подробно читать в MSDN
Можно улучшить результат если собирать файлы не в string, а сразу в FileInfo и List
Комментариев нет:
Отправить комментарий