В C# удалить папку и все файлы и папки в этой папке
Я пытаюсь удалить папку и все файлы и папки в этой папке, я использую код ниже, и я получаю ошибку Folder is not empty, какие-либо предложения о том, что я могу сделать?
try
{
var dir = new DirectoryInfo(@FolderPath);
dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
dir.Delete();
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[i].Index);
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
8 ответов:
попробуй:
System.IO.Directory.Delete(path,true)это будет рекурсивно удалить все файлы и папки под "путь" предполагая, что у вас есть разрешения на это.
вы должны использовать:
dir.Delete(true);для рекурсивного удаления содержимого этой папки тоже. См. MSDN DirectoryInfo.Удалить() перегрузок.
попробуйте это.
namespace EraseJunkFiles { class Program { static void Main(string[] args) { DirectoryInfo yourRootDir = new DirectoryInfo(@"C:\somedirectory\"); foreach (DirectoryInfo dir in yourRootDir.GetDirectories()) DeleteDirectory(dir.FullName, true); } public static void DeleteDirectory(string directoryName, bool checkDirectiryExist) { if (Directory.Exists(directoryName)) Directory.Delete(directoryName, true); else if (checkDirectiryExist) throw new SystemException("Directory you want to delete is not exist"); } } }
public void Empty(System.IO.DirectoryInfo directory) { try { logger.DebugFormat("Empty directory {0}", directory.FullName); foreach (System.IO.FileInfo file in directory.GetFiles()) file.Delete(); foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true); } catch (Exception ex) { ex.Data.Add("directory", Convert.ToString(directory.FullName, CultureInfo.InvariantCulture)); throw new Exception(string.Format(CultureInfo.InvariantCulture,"Method:{0}", ex.TargetSite), ex); } }
Comments