Проблемы с созданием ZIP-файла в C#
Я пытаюсь создать zip-файл с помощью этого кода, но ничего не работает, конструктор ZipFile не получает () только перегрузку с аргументами, и у меня нет SAVE
метод? В чем дело?
using (ZipFile zip = new ZipFile())
{
zip.AddEntry("C://inetpub//wwwroot//Files//Wireframes//" + url, zip.Name);
zip.AddDirectory("C://inetpub//wwwroot//Files//Wireframes//" + url);
zip.Save(downloadFileName);
}
1 ответ
Решение
Чтобы сжать весь каталог с помощью SharpZipLib, вы можете попробовать этот метод:
private void ZipFolder(string folderName, string outputFile)
{
string[] files = Directory.GetFiles(folderName);
using (ZipOutputStream zos = new ZipOutputStream(File.Create(outputFile)))
{
zos.SetLevel(9); // 9 = highest compression
byte[] buffer = new byte[4096];
foreach (string file in files)
{
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
entry.DateTime = DateTime.Now;
zos.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int byteRead;
do
{
byteRead = fs.Read(buffer, 0,buffer.Length);
zos.Write(buffer, 0, byteRead);
}
while (byteRead > 0);
}
}
zos.Finish();
zos.Close();
}
Как видите, у нас действительно отличный код от вашего примера.
Как я уже говорил в моем комментарии выше, ваш пример, похоже, взят из DotNetZip. Если вы хотите использовать эту библиотеку, ваш код будет:
using (ZipFile zip = new ZipFile())
{
zip.AddFile("C://inetpub//wwwroot//Files//Wireframes//" + url);
zip.AddDirectory("C://inetpub//wwwroot//Files//Wireframes//" + url, "WireFrames");
zip.Save(downloadFileName);
}
РЕДАКТИРОВАТЬ: Добавить все файлы PNG в определенном каталоге
using (ZipFile zip = new ZipFile())
{
string filesPNG = Directory.GetFiles("C://inetpub//wwwroot//Files//Wireframes//" + url, "*.PNG);
foreach(string file in filesPNG)
zip.AddFile(file);
zip.Save(downloadFileName);
}