С# console Приложение удаляет файлы и папки

-4

Я пытаюсь удалить папки и файлы, как только это будет завершено, а затем захочет разархивировать новую сжатую папку в папку удаленных папок и файлов....

поэтому в основном

Удаление старых папок и файлов извлекает новую папку и файлы

может кто-нибудь, пожалуйста, скажите мне, что не так с моим кодом? удаляющая часть останавливает его, если я удаляю часть удаления, которая работает нормально...

using System;
using System.IO;
using System.IO.Compression;

namespace unZipMe
{
class Program
{

static void Main(string[] args)
{
//provide the folder to be zipped
//string folderToZip = @"c:\Temp\ZipSample";

DirectoryInfo di = new DirectoryInfo(@"c:\Temp\ZipSampleExtract");
DirectoryInfo file = new DirectoryInfo(@"c:\Temp\ZipSampleExtract");

//foreach (FileInfo file in di.GetFiles())
{
file.Delete(true);
}
//foreach (DirectoryInfo dir in di.GetDirectories())
{
di.Delete(true);
}

//provide the path and name for the zip file to create
string zipFile = @"c:\Temp\ZipSampleOutput\MyZippedDocuments.zip";

//call the ZipFile.CreateFromDirectory() method
//ZipFile.CreateFromDirectory(folderToZip, zipFile, CompressionLevel.Optimal, false);

//specif the directory to which to extract the zip file
string extractFolder = @"c:\Temp\ZipSampleExtract\";

//call the ZipFile.ExtractToDirectory() method
ZipFile.ExtractToDirectory(zipFile, extractFolder);
}
}
}

сообщение об ошибке

'unZipMe.exe' (CLR v4.0.30319: DefaultDomain): загружен 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Пропущенные символы загрузки. Модуль оптимизирован и включен параметр отладчика "Только мой код". 'unZipMe.exe' (CLR v4.0.30319: DefaultDomain): Загружен 'C:\Users\name\Dropbox\BegASPNET\unZipMe\unZipMe\bin\Debug\unZipMe.exe'. Загружены символы. 'unZipMe.exe' (CLR v4.0.30319: unZipMe.exe): Загружен 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.IO.Compression.FileSystem\v4.0_4.0.0.0__b77a5c561934e089\System.IO.Compression.FileSystem.dll. Пропущенные символы загрузки. Модуль оптимизирован и включен параметр отладчика "Только мой код". 'unZipMe.exe' (CLR v4.0.30319: unZipMe.exe): загружен 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'. Пропущенные символы загрузки. Модуль оптимизирован и включен параметр отладчика "Только мой код". Программа '[16164] unZipMe.exe' вышла с кодом 0 (0x0).

спросил(а) 2018-05-15T18:39:00+03:00 1 год, 9 месяцев назад
0
70

Там обходной путь, если удаление не требуется:

Поскольку путь извлечения находится в каталоге temp, вы можете позволить системе выполнить удаление. С другой стороны, создание нового каталога extract с GUID каждом распаковке операции.

var extractFolder = Path.Combine(@"c:\Temp\ZipSampleExtract\", Guid.NewGuid());
Directory.CreateDirectory(extractFolder);

ответил(а) 2018-05-15T19:18:00+03:00 1 год, 9 месяцев назад
36

Вызов Delete() в экземпляре DirectorInfo будет выполнен только в том случае, если каталог пуст.

DirectoryInfo di = new DirectoryInfo(@"c:\Temp\ZipSampleExtract");
di.Delete(true);

Вышеприведенный код не сработает, если папка C:\Temp\ZipSampleExtract не пуста и вызовет исключение IOException (что похоже на вашу папку, поскольку вы упомянули, что это целевая папка извлечения zip).

Вместо этого вы можете использовать метод Delete static в классе Directory со вторым параметром как true, чтобы рекурсивно удалить любые подкаталоги и файлы в этой папке.

Directory.Delete(@"c:\Temp\ZipSampleExtract",true);

ответил(а) 2018-05-15T19:10:00+03:00 1 год, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема