В 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);
}
1453   8  

8 ответов:

dir.Delete(true); // true => recursive delete

читать инструкцию:

попробуй:

System.IO.Directory.Delete(path,true)

это будет рекурсивно удалить все файлы и папки под "путь" предполагая, что у вас есть разрешения на это.

Err, а как насчет просто позвонить Directory.Delete(path, true); ?

The

вы должны использовать:

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

    Ничего не найдено.