Показать полную графическую версию : [решено] Работа с zip-архивами. C#
Здрасте.
Насколько знаю в cmd достаточно использовать: unzip -o *.zip
при условии что папке лежит стандартный unzip.exe
Подскажите как произвести распаковку архива методами .NET
Добавил private void arh_Click(object sender, EventArgs e)
{
try
{
Process prog = new Process();
prog.StartInfo.ErrorDialog = true;
prog.StartInfo.FileName = "D:\\1\\unzip.exe";
prog.StartInfo.Arguments = "-o *.zip";
prog.Start();
prog.WaitForInputIdle();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Но почему то не обрабатываются аргументы.
Delirium
24-08-2010, 08:33
ZIP/UnZip Folders in C# (http://www.eggheadcafe.com/tutorials/aspnet/9ce6c242-c14c-4969-9251-af95e4cf320f/zip--unzip-folders-and-f.aspx)
Работа с ZIP файлами в C# (http://geraldgibson.net/dnn/Home/CZipFileCompression/tabid/148/Default.aspx)
Используй библиотеку ICSharpCode.SharpZipLib! Добавляй в references!ну а далее так:
using ICSharpCode.SharpZipLib.Zip;
FastZip FZ = new FastZip();
FZ.ExtractZip("Путь архива.zip","назначение","[фильтры]");
Я по английски не очень... Как произвести распаковку архива(ов) в одной папке (аргументами или функцией), если неизвестны названия?
Delirium
24-08-2010, 16:04
Efsey, ну можно обходом папки, примерно так(в данном примере не проверяются расширения файлов). Будем считать что в указанной папке лежат одни ZIP файлы:
OpenFileDialog fd= new OpenFileDialog();
FastZip FZ = new FastZip();
if(fd.ShowDialog() == DialogResult.OK)
{
foreach(string filename in fd.FileNames)
{
FileInfo info = new FileInfo(filename);
FZ.ExtractZip(Path.GetDirectoryName(info.FullName) + "\\" + Path.GetFileName(info.FullName),"C:\\temp","[фильтры]");
}
}
Я по английски не очень... »
А как же вы хотите программировать и не знать английского? Его знание крайне желательно, хотя бы для того, чтобы понимать визуально, что делает тот или иной код.
Если я правильно понял: есть папка, в ней могут быть архивы .zip в неизвестном количестве, и неизвестными именами!и нужно их извлечь?!?!?!
Если так, то вот как приблизительно можно сделать :
DirectoryInfo DI = new DirectoryInfo("Директория где будут лежать архивы");
foreach (FileInfo FI in DI.GetFiles("*.zip")) //Перебираем только файлы архивов
{
//Получаем список всех zip архивов(FI.FullName) и делаем с ними что нить!
}
ЗЫ. Не Забыть подключить System.IO
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.