2016-09-27 2 views
3

Я пытаюсь создать zip-файл из всех файлов в папке, но не могу найти связанный фрагмент в Интернете. Я пытаюсь сделать что-то вроде этого:Создайте zip-файл из всех файлов в папке

DirectoryInfo dir = new DirectoryInfo("somedir path"); 
ZipFile zip = new ZipFile(); 
zip.AddFiles(dir.getfiles()); 
zip.SaveTo("some other path"); 

Любая помощь очень ценится.

Редакция:

Редактирование: Я только хочу заархивировать файлы из папки, а не подпапки.

ответ

8
using System.Compression.IO 

string startPath = @"c:\example\start";//folder to add 
string zipPath = @"c:\example\result.zip";//URL for your ZIP file 
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true); 
string extractPath = @"c:\example\extract";//path to extract 
ZipFile.ExtractToDirectory(zipPath, extractPath); 

Чтобы использовать только файлы, используйте:

//Creates a new, blank zip file to work with - the file will be 
//finalized when the using statement completes 
using (ZipArchive newFile = ZipFile.Open(zipName, ZipArchiveMode.Create)) 
{ 
    foreach (string file in Directory.GetFiles(myPath)) 
    { 
     newFile.CreateEntryFromFile(file); 
    }    
} 
+0

Благодарим вас за ответ. Этот образец обрезает все файлы и папки в папке. Я просто хочу заархивировать файлы из папки. – SnelleJelle

+0

Да, конечно - снимите меня, когда я ответил на это и час, прежде чем указывать OP, они не хотели включать вложенные папки. гм ... как это плохой ответ, учитывая, что он был сделан до редактирования? –

+0

Я очень благодарен вам за то, что вы потратили время и силы, чтобы попытаться помочь мне. Как образец, так и заголовок ясно заявили, что я только хотел заархивировать файлы. Я просто подумал, что я должен сказать это более четко, поэтому я добавил редактирование. – SnelleJelle

1

Реферирование System.IO.Compression и System.IO.Compression.FileSystem в вашем проекте, ваш код может быть что-то вроде:

string startPath = @"some path"; 
string zipPath = @"some other path"; 
var files = Directory.GetFiles(startPath); 

using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Open)) 
{ 
    using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create)) 
    { 
     foreach (var file in files) 
     { 
      archive.CreateEntryFromFile(file, file); 
     } 
    } 
} 

В некоторых папках, хотя вы, возможно, проблемы с допущениями.

Смежные вопросы