Архивация файла [требует правки]

216
03 августа 2017, 22:23

Здравствуйте. Подскажите, пожалуйста, как можно заархивировать отдельный файл, видео или картинку в архив на wpf?

Answer 1

Вам нужен инструментарий из System.IO.Compression.

Пример создания архива C:\result.zip, содержащего файл C:\data.txt:

using (var fileStream = new FileStream(@"C:\result.zip", FileMode.Create))
using (var archive = new ZipArchive(fileStream, ZipArchiveMode.Create))
{
    archive.CreateEntryFromFile(@"C:\data.txt", "data.txt");
}

Для использования метода расширения CreateEntryFromFile необходимо подключить сборку System.IO.Compression.FileSystem.

Рекомендую изучить следующее руководство: https://msdn.microsoft.com/ru-ru/library/ms404280(v=vs.110).aspx

Answer 2

Используйте DotNetZip

Пример использования: создание архива

using (ZipFile zip = new ZipFile())
 {
     // add this map file into the "images" directory in the zip archive
     zip.AddFile("c:\\images\\personal\\7440-N49th.png", "images");
     // add the report into a different directory in the archive
     zip.AddFile("c:\\Reports\\2008-Regional-Sales-Report.pdf", "files");
     zip.AddFile("ReadMe.txt");
     zip.Save("MyZipFile.zip");
 }

И о сжатии файлов, подробнее читайте здесь и здесь

Answer 3

Архивирование - это очень обширное понятия. Если речь идёт о создании архивного файла в одном из распространённых форматов, то смотри ответы пользователей.

Если же тебе необходимо просто сжать файл для того чтобы уменьшить объем, и хранить его хоть на файловой системе, хоть в оперативной памяти, подойдёт более легковесный GZipStream.

READ ALSO
C# WPF MVVM - Drag and Drop

C# WPF MVVM - Drag and Drop

Задача, сделать возможность для перетаскивания элемента из ListView в TreeView и обратноПолучается только перетащить выделенный текст из TextBox в TreeView...

686
Добавить в билдер ресурс C#

Добавить в билдер ресурс C#

Сделал билдер на C#В исходном коде, который должно комплитить есть потребность в ресурсе

279
Как перевести текст из одной раскладки в другую (“Home” --> “Рщьу”)

Как перевести текст из одной раскладки в другую (“Home” --> “Рщьу”)

Есть слово на английском Home его нужно перевести в слово Рщьу

285
Получить Exception из BackgroundWorker

Получить Exception из BackgroundWorker

Перерыл интернет и не смог найти ответа на свой вопросИспользую backgroundworker, запускаю его в работу таким методом async void bw_DoWork(object sender, DoWorkEventArgs...

325