C #은 폴더와 해당 폴더 내의 모든 파일 및 폴더를 삭제합니다.


104

폴더와 해당 폴더 내의 모든 파일 및 폴더를 삭제하려고합니다. 아래 코드를 사용하고 있는데 오류가 발생합니다 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);
}

답변:



111

매뉴얼 읽기 :

Directory.Delete 메서드 (String, Boolean)

Directory.Delete(folderPath, true);

68
구글링하는 것이 훨씬 빠르면 왜 매뉴얼을 읽고 여기까지 오나요?
reggaeguitar 2015 년

5
이것은 정말 사실입니다
Corvin

4
사실 ... 이걸 봤는데이 게시물은 구글의 첫 번째 결과였습니다.
MasterN8 2018

2
내가하는 일은 미래의 Google 직원을 돕기 위해 질문을 한 다음 직접 답변하는 것입니다. StackOverflow를 사용하면 질문과 답변을 동시에 게시 할 수 있습니다.
DharmaTurtle

1
나는 이런 식으로 모든 지역 문서화를 시작했습니다. FAQ가 아니라 SO 질문과 비슷합니다. 즉 어떻게합니까? 또는 이것은 무엇입니까?
Paul Duer

23

시험:

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

이렇게하면 권한이 있다고 가정하고 "경로"아래에있는 모든 파일과 폴더가 재귀 적으로 삭제됩니다.





3

이 시도.

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");
        }
    }
}

0
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);
    }
}

0

이 시도:

foreach (string files in Directory.GetFiles(SourcePath))
{
   FileInfo fileInfo = new FileInfo(files);
   fileInfo.Delete(); //delete the files first. 
}
Directory.Delete(SourcePath);// delete the directory as it is empty now.

이 코드는 질문에 답할 수 있지만 문제를 해결하는 방법 및 / 또는 이유에 대한 추가 컨텍스트를 제공하면 답변의 장기적인 가치가 향상됩니다. 이것을 읽으십시오
Shanteshwar Inde

0

DirectoryNotFoundException을 실행하는 사람들을 위해 다음 검사를 추가하십시오.

if (Directory.Exists(path)) Directory.Delete(path, true);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.