디렉토리의 모든 파일과 폴더를 삭제하는 방법은 무엇입니까?


662

C #을 사용하여 디렉토리에서 모든 파일과 폴더를 삭제하고 루트 디렉토리를 계속 유지하려면 어떻게해야합니까?


11
DirectoryInfo에 .Clean ()과 같은 메소드가 있다면 좋을 것입니다.
JL.

6
또는 .DeleteFolders 및 DeleteFiles 메소드.
JL.

18
파일이 잠겨 있거나 권한이없는 경우 삭제시 예외를 매우 쉽게 처리 할 수 ​​있습니다. 예외 목록은 FileInfo.Delete를 참조하십시오.
Shane Courtrille

답변:


833
System.IO.DirectoryInfo di = new DirectoryInfo("YourPath");

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

디렉토리에 많은 파일이있을 경우, EnumerateFiles()보다 효율적입니다. GetFiles()사용 EnumerateFiles()하기 전에 전체 콜렉션 GetFiles()을 열거하기 전에 전체 콜렉션을 메모리에로드해야하는 위치가 아니라 전체 콜렉션이 리턴 되기 전에 열거를 시작할 수 있기 때문입니다. 여기이 인용문을 보십시오 :

따라서 많은 파일과 디렉토리로 작업 할 때 EnumerateFiles ()가 더 효율적일 수 있습니다.

동일하게 적용 EnumerateDirectories()하고 GetDirectories(). 따라서 코드는 다음과 같습니다.

foreach (FileInfo file in di.EnumerateFiles())
{
    file.Delete(); 
}
foreach (DirectoryInfo dir in di.EnumerateDirectories())
{
    dir.Delete(true); 
}

이 질문의 목적 상 실제로 GetFiles()와 를 사용할 이유가 없습니다 GetDirectories().


6
어떤 것은 관한 stackoverflow.com/questions/12415105/... ""당신이 Directory.Delete를 호출하고 파일이 같은 방법으로 열려있는 경우, Directory.Delete 모든 파일을 삭제에 성공하지만 Directory.Delete이 RemoveDirectory를 호출 할 때 "디렉토리가 비어 있지 않습니다 삭제 표시된 파일이 있지만 실제로 삭제되지 않았기 때문에 예외가 발생합니다. "
Kiquenet

74
훨씬 많은 다른 데이터를 수집하므로 DirectoryInfo가 느립니다. BTW : Directory.Delete(path, true)모든 것을 돌볼 것입니다 :)
AcidJunkie

57
@AcidJunkie, 문제의 디렉토리도 제거하지만 OP는 루트 디렉토리를 유지할 것을 요청합니다.
Marc L.

5
파일이 읽기 전용 인 경우에는 작동하지 않습니다. 을 호출하기 전에 읽기 전용 플래그를 제거해야합니다 file.Delete().
Ben

8
하위 디렉토리에 파일이 있으면 작동하지 않는 것 같습니다.
cdiggins

174

예, 올바른 방법입니다. 자신에게 "깨끗한"(또는 "빈"기능을 선호하는 경우) 확장 기능을 제공하려는 경우 확장 메서드를 만들 수 있습니다.

public static void Empty(this System.IO.DirectoryInfo directory)
{
    foreach(System.IO.FileInfo file in directory.GetFiles()) file.Delete();
    foreach(System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true);
}

그러면 다음과 같은 작업을 수행 할 수 있습니다.

System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(@"C:\...");

directory.Empty();

4
마지막 줄은 directory.Delete (true) 대신 subDirectory.Delete (true) 여야합니다. 방금 코드를 잘라서 붙여 넣고 기본 디렉토리 자체를 삭제했습니다. 코드 감사합니다!
Aximili

26
참고 Empty를 위해, 이미 C #에 있습니다 string. 이름이 다른 것을 보았을 Empty때 객체 bool가 비어 있는지 아닌지를 알려주는 대신 객체 (또는 파일 시스템)를 수정하면 놀랐습니다 . 그 때문에 나는 이름으로 갈 것입니다 Clean.
기본값

5
@Default : 한 유형에 속성이 이미 있다는 사실은 다른 유형 (완전히 관련이없는)에 해당 속성이 있어야한다고 생각하지 않습니다. 또한 동사가 될 수있는 단어에 대한 상태를 나타내는 속성과 기능에 대한 규칙은 그들 앞에 붙이는 것입니다 Is(즉 IsEmpty보다는 오히려 Empty).
Adam Robinson

3
@AdamRobinson 그냥 메모하고 싶었습니다. 에 , 무엇을 마이크로 소프트가 자신의 코드를 가지고하는 것은 어떤 관계가 않습니다. 그러나 모두가 해석하는 것은 :)
기본

4
@simonhaines : 문제는 디렉토리 자체를 삭제하지 않고 디렉토리 를 비우는 것입니다 (즉, 디렉토리 안의 모든 것을 삭제 하십시오 ).
Adam Robinson

77

다음 코드는 폴더를 재귀 적으로 지 웁니다.

private void clearFolder(string FolderName)
{
    DirectoryInfo dir = new DirectoryInfo(FolderName);

    foreach(FileInfo fi in dir.GetFiles())
    {
        fi.Delete();
    }

    foreach (DirectoryInfo di in dir.GetDirectories())
    {
        clearFolder(di.FullName);
        di.Delete();
    }
}

Directory.Delete (path, true); 동안 나를 위해 일했습니다 . 폴더가 empy가 아니라고 불평 함
Jack Griffin

40
 new System.IO.DirectoryInfo(@"C:\Temp").Delete(true);

 //Or

 System.IO.Directory.Delete(@"C:\Temp", true);

1
두 번째 옵션 인 Directory.Delete (String, Boolean)이 저에게 효과적이었습니다.
Stephen MacDougall

15
이렇게하면 OP가 유지하도록 루트 디렉토리를 삭제합니다.
Marc L.

2
Delete디렉토리가 존재하지 않으면 던지기 때문에 Directory.Exists먼저 확인 하는 것이 더 안전합니다 .
James

1
@ 제임스 (James) Directory.Exists는 충분하지 않습니다. 확인 후 다른 스레드가 디렉토리 이름을 바꾸거나 디렉토리를 제거했을 수 있습니다. 에 더 안전합니다 try-catch.
andre_ss6

2
@Marv주의 단순히를 추가로 Directory.Create재귀가 있기 때문에 Directory.Delete불행히도 .. 동기 보장되지 않습니다
앤드류 Hanlon에를

38

LINQ에 대한 사랑을 보여줄 수도 있습니다 .

using System.IO;
using System.Linq;

var directory = Directory.GetParent(TestContext.TestDir);

directory.EnumerateFiles()
    .ToList().ForEach(f => f.Delete());

directory.EnumerateDirectories()
    .ToList().ForEach(d => d.Delete(true));

내가 사용하고 있기 때문에 여기 내 솔루션이 확대됨되지 않도록주의 Get*().ToList().ForEach(...)같은 생성하는 IEnumerable두 번합니다. 이 문제를 피하기 위해 확장 방법을 사용합니다.

using System.IO;
using System.Linq;

var directory = Directory.GetParent(TestContext.TestDir);

directory.EnumerateFiles()
    .ForEachInEnumerable(f => f.Delete());

directory.EnumerateDirectories()
    .ForEachInEnumerable(d => d.Delete(true));

이것이 확장 방법입니다.

/// <summary>
/// Extensions for <see cref="System.Collections.Generic.IEnumerable"/>.
/// </summary>
public static class IEnumerableOfTExtensions
{
    /// <summary>
    /// Performs the <see cref="System.Action"/>
    /// on each item in the enumerable object.
    /// </summary>
    /// <typeparam name="TEnumerable">The type of the enumerable.</typeparam>
    /// <param name="enumerable">The enumerable.</param>
    /// <param name="action">The action.</param>
    /// <remarks>
    /// “I am philosophically opposed to providing such a method, for two reasons.
    /// …The first reason is that doing so violates the functional programming principles
    /// that all the other sequence operators are based upon. Clearly the sole purpose of a call
    /// to this method is to cause side effects.”
    /// —Eric Lippert, “foreach” vs “ForEach” [http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx]
    /// </remarks>
    public static void ForEachInEnumerable<TEnumerable>(this IEnumerable<TEnumerable> enumerable, Action<TEnumerable> action)
    {
        foreach (var item in enumerable)
        {
            action(item);
        }
    }
}

1
하위 디렉토리도 삭제하려는 경우 foreach (var dir in info.GetDirectories("*", SearchOption.AllDirectories).OrderByDescending(dir => dir.FullName.Length)) dir.Delete();사용 중일 수 있습니다.
Warty

1
성능이 마음 에 들면 방법 대신 directory.EnumerateFiles()directory.EnumerateDirectories()사용을 고려 하십시오 directory.Get*().
Tinister

1
재미 있고, 내 IEnumerable<T>.ForEach()확장에는 "Violation! Violation! Unclean!"이라는 요약 XML 주석이 있습니다.
Marc L.

두 번째 이유는 무엇입니까? 셋째? 기타.?
Bill Roberts

lol @RASX-그는 당신에게 말하고 있습니다 : "당신이이 철학적 반대에 동의하지 않고이 패턴에서 실질적인 가치를 발견한다면, 반드시이 사소한 원 라이너를 직접 작성하십시오."
Bill Roberts

37

가장 간단한 방법 :

Directory.Delete(path,true);  
Directory.CreateDirectory(path);

이로 인해 폴더에 대한 일부 권한이 지워질 수 있습니다.


9
이렇게하면 경로에있는 특별한 권한이 제거됩니다.
Matthew Lock

6
이 두 작업 사이에 시간 초과를 추가해야합니다. 이 코드를 실행하려고하면 예외가 발생합니다. while (true) {Directory.Delete (@ "C : \ Myfolder", true); Directory.CreateDirectory (@ "C : \ Myfolder"); }
RcMan

31
private void ClearFolder(string FolderName)
{
    DirectoryInfo dir = new DirectoryInfo(FolderName);

    foreach(FileInfo fi in dir.GetFiles())
    {
        try
        {
            fi.Delete();
        }
        catch(Exception) { } // Ignore all exceptions
    }

    foreach(DirectoryInfo di in dir.GetDirectories())
    {
        ClearFolder(di.FullName);
        try
        {
            di.Delete();
        }
        catch(Exception) { } // Ignore all exceptions
    }
}

하위 폴더가 없다는 것을 알고 있다면 다음과 같은 것이 가장 쉽습니다.

    Directory.GetFiles(folderName).ForEach(File.Delete)

이 기능을 사용하여 시스템 임시 폴더를 지 웁니다. 방금 Delete () 및 IsReadOnly 주위에 try-catch를 추가하여 모든 예외를 무시하고 작동했습니다.
humbads

@humbads,이 답변을 업데이트하거나 여기에 코드를 넣을 수 있습니까? 변경 사항을 업데이트 하시겠습니까?
zumalifeguard

13
System.IO.Directory.Delete(installPath, true);
System.IO.Directory.CreateDirectory(installPath);

3
위와 동일 : 경로에있는 특별한 권한이 제거됩니다.
hB0

8

내가 시도한 모든 방법은 System.IO 오류로 어느 시점에서 실패했습니다. 다음 방법은 폴더가 비어 있거나 읽기 전용인지 여부에 관계없이 확실하게 작동합니다.

ProcessStartInfo Info = new ProcessStartInfo();  
Info.Arguments = "/C rd /s /q \"C:\\MyFolder"";  
Info.WindowStyle = ProcessWindowStyle.Hidden;  
Info.CreateNoWindow = true;  
Info.FileName = "cmd.exe";  
Process.Start(Info); 

1
디렉토리를 비울 때 항상 rd / s / q + mkdir을 선호합니다.
Dawid Ohia

7
이것은 크로스 플랫폼 솔루션이 아닙니다. 유닉스 계열 시스템에는 분명히 cmd.exe가 없으며 .exe 파일도 실행하지 않습니다. C #은 Windows만이 아니며 크로스 플랫폼 인 Mono도 있습니다.
표시 이름

1
@SargeBorsch는 질문에 크로스 플랫폼 요구 사항이 없었으며 C # 인 경우 솔루션이 Windows에 사용될 가능성이 큽니다. .NET 함수를 사용하지 않는 유일한 대답 인 것 같으므로 대안으로 매우 유용합니다.
Alex Pandrea

7

다음은 모든 게시물을 읽은 후 끝낸 도구입니다. 그렇습니다

  • 삭제할 수있는 모든 것을 삭제합니다
  • 일부 파일이 폴더에 남아 있으면 false를 반환합니다.

그것은 다루고

  • 읽기 전용 파일
  • 삭제 지연
  • 잠긴 파일

프로세스가 예외로 중단되었으므로 Directory.Delete를 사용하지 않습니다.

    /// <summary>
    /// Attempt to empty the folder. Return false if it fails (locked files...).
    /// </summary>
    /// <param name="pathName"></param>
    /// <returns>true on success</returns>
    public static bool EmptyFolder(string pathName)
    {
        bool errors = false;
        DirectoryInfo dir = new DirectoryInfo(pathName);

        foreach (FileInfo fi in dir.EnumerateFiles())
        {
            try
            {
                fi.IsReadOnly = false;
                fi.Delete();

                //Wait for the item to disapear (avoid 'dir not empty' error).
                while (fi.Exists)
                {
                    System.Threading.Thread.Sleep(10);
                    fi.Refresh();
                }
            }
            catch (IOException e)
            {
                Debug.WriteLine(e.Message);
                errors = true;
            }
        }

        foreach (DirectoryInfo di in dir.EnumerateDirectories())
        {
            try
            {
                EmptyFolder(di.FullName);
                di.Delete();

                //Wait for the item to disapear (avoid 'dir not empty' error).
                while (di.Exists)
                {
                    System.Threading.Thread.Sleep(10);
                    di.Refresh();
                }
            }
            catch (IOException e)
            {
                Debug.WriteLine(e.Message);
                errors = true;
            }
        }

        return !errors;
    }

6

다음 코드는 디렉토리를 정리하지만 루트 디렉토리는 그대로 둡니다 (재귀 적).

Action<string> DelPath = null;
DelPath = p =>
{
    Directory.EnumerateFiles(p).ToList().ForEach(File.Delete);
    Directory.EnumerateDirectories(p).ToList().ForEach(DelPath);
    Directory.EnumerateDirectories(p).ToList().ForEach(Directory.Delete);
};
DelPath(path);

6

나는 사용했다

Directory.GetFiles(picturePath).ToList().ForEach(File.Delete);

오래된 사진을 삭제 하고이 폴더에 객체가 필요하지 않습니다.


1
확실하지 않습니다 .ToList ()
Ben Power

5

FileInfo 및 DirectoryInfo 대신 File 및 Directory에 정적 메소드 만 사용하면 성능이 향상됩니다. ( C #에서 File과 FileInfo의 차이점은 무엇입니까? 에서 허용되는 답변을 참조하십시오 ). 유틸리티 방법으로 답변이 표시됩니다.

public static void Empty(string directory)
{
    foreach(string fileToDelete in System.IO.Directory.GetFiles(directory))
    {
        System.IO.File.Delete(fileToDelete);
    }
    foreach(string subDirectoryToDeleteToDelete in System.IO.Directory.GetDirectories(directory))
    {
        System.IO.Directory.Delete(subDirectoryToDeleteToDelete, true);
    }
}

5
private void ClearFolder(string FolderName)
{
    DirectoryInfo dir = new DirectoryInfo(FolderName);

    foreach (FileInfo fi in dir.GetFiles())
    {
        fi.IsReadOnly = false;
        fi.Delete();
    }

    foreach (DirectoryInfo di in dir.GetDirectories())
    {
        ClearFolder(di.FullName);
        di.Delete();
    }
}

3
string directoryPath = "C:\Temp";
Directory.GetFiles(directoryPath).ToList().ForEach(File.Delete);
Directory.GetDirectories(directoryPath).ToList().ForEach(Directory.Delete);

mscorlib.dll에서 'System.IO.IOException'유형의 예외가 발생했지만 사용자 코드에서 처리되지 않았습니다. 추가 정보 : 디렉토리가 비어 있지 않습니다.
kipusoep

3

Windows 7에서 Windows 탐색기를 사용하여 수동으로 생성 한 경우 디렉토리 구조는 다음과 유사합니다.

C:
  \AAA
    \BBB
      \CCC
        \DDD

그리고 C : \ AAA 디렉토리를 정리하기 위해 원래 질문에서 제안한 코드를 실행하면 di.Delete(true)BBB를 삭제하려고 할 때 IOException "디렉토리가 비어 있지 않습니다"라는 메시지가 표시되면서 항상 실패합니다. 아마도 Windows 탐색기의 일종의 지연 / 캐싱 때문일 수 있습니다.

다음 코드는 안정적으로 작동합니다.

static void Main(string[] args)
{
    DirectoryInfo di = new DirectoryInfo(@"c:\aaa");
    CleanDirectory(di);
}

private static void CleanDirectory(DirectoryInfo di)
{
    if (di == null)
        return;

    foreach (FileSystemInfo fsEntry in di.GetFileSystemInfos())
    {
        CleanDirectory(fsEntry as DirectoryInfo);
        fsEntry.Delete();
    }
    WaitForDirectoryToBecomeEmpty(di);
}

private static void WaitForDirectoryToBecomeEmpty(DirectoryInfo di)
{
    for (int i = 0; i < 5; i++)
    {
        if (di.GetFileSystemInfos().Length == 0)
            return;
        Console.WriteLine(di.FullName + i);
        Thread.Sleep(50 * i);
    }
}

어떤 것은 관한 stackoverflow.com/questions/12415105/... ""당신이 Directory.Delete를 호출하고 파일이 같은 방법으로 열려있는 경우, Directory.Delete 모든 파일을 삭제에 성공하지만 Directory.Delete이 RemoveDirectory를 호출 할 때 "디렉토리가 비어 있지 않습니다 삭제 표시된 파일이 있지만 실제로 삭제되지 않았기 때문에 예외가 발생합니다. "
Kiquenet

@Kiquenet : Windows에서 문제가 발견 된 것 같습니다. Windows는 삭제 표시된 파일 목록을 참조 할 수 있으며 디렉토리의 모든 파일이 삭제 표시된 것으로 표시되면 디렉토리가 비어 있지 않다고 말하지 마십시오. 어쨌든 내 WaitForDirectoryToBecomeEmpty ()는 해결 방법입니다.
farfareast

2

이 버전은 재귀 호출을 사용하지 않으며 읽기 전용 문제를 해결합니다.

public static void EmptyDirectory(string directory)
{
    // First delete all the files, making sure they are not readonly
    var stackA = new Stack<DirectoryInfo>();
    stackA.Push(new DirectoryInfo(directory));

    var stackB = new Stack<DirectoryInfo>();
    while (stackA.Any())
    {
        var dir = stackA.Pop();
        foreach (var file in dir.GetFiles())
        {
            file.IsReadOnly = false;
            file.Delete();
        }
        foreach (var subDir in dir.GetDirectories())
        {
            stackA.Push(subDir);
            stackB.Push(subDir);
        }
    }

    // Then delete the sub directories depth first
    while (stackB.Any())
    {
        stackB.Pop().Delete();
    }
}

1

DirectoryInfo의 GetDirectories 메소드를 사용하십시오.

foreach (DirectoryInfo subDir in new DirectoryInfo(targetDir).GetDirectories())
                    subDir.Delete(true);

1

다음 예제는이를 수행하는 방법을 보여줍니다. 먼저 일부 디렉토리와 파일을 만든 다음 다음을 통해 제거합니다 Directory.Delete(topPath, true);.

    static void Main(string[] args)
    {
        string topPath = @"C:\NewDirectory";
        string subPath = @"C:\NewDirectory\NewSubDirectory";

        try
        {
            Directory.CreateDirectory(subPath);

            using (StreamWriter writer = File.CreateText(subPath + @"\example.txt"))
            {
                writer.WriteLine("content added");
            }

            Directory.Delete(topPath, true);

            bool directoryExists = Directory.Exists(topPath);

            Console.WriteLine("top-level directory exists: " + directoryExists);
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.Message);
        }
    }

https://msdn.microsoft.com/en-us/library/fxeahc5f(v=vs.110).aspx 에서 가져옵니다 .


1

위의 문제를 처리하는 가장 좋은 방법은 아닙니다. 그러나 그것은 대안입니다 ...

while (Directory.GetDirectories(dirpath).Length > 0)
 {
       //Delete all files in directory
       while (Directory.GetFiles(Directory.GetDirectories(dirpath)[0]).Length > 0)
       {
            File.Delete(Directory.GetFiles(dirpath)[0]);
       }
       Directory.Delete(Directory.GetDirectories(dirpath)[0]);
 }

0
DirectoryInfo Folder = new DirectoryInfo(Server.MapPath(path)); 
if (Folder .Exists)
{
    foreach (FileInfo fl in Folder .GetFiles())
    {
        fl.Delete();
    }

    Folder .Delete();
}

좀 더 구체적으로 설명하고 이것이 어떻게 어떻게 작동해야하는지 설명해 주시겠습니까?
Deep Frozen

3
코드 만있는 답변은 적합하지 않습니다. 문제의 작동 방법 및 이유를 설명하고 문제를 해결해야합니다.
rdurand

0

폴더를 삭제하고 텍스트 상자를 사용하는지 확인하는 방법을 보여줍니다.

using System.IO;
namespace delete_the_folder
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Deletebt_Click(object sender, EventArgs e)
    {
        //the  first you should write the folder place
        if (Pathfolder.Text=="")
        {
            MessageBox.Show("ples write the path of the folder");
            Pathfolder.Select();
            //return;
        }

        FileAttributes attr = File.GetAttributes(@Pathfolder.Text);

        if (attr.HasFlag(FileAttributes.Directory))
            MessageBox.Show("Its a directory");
        else
            MessageBox.Show("Its a file");

        string path = Pathfolder.Text;
        FileInfo myfileinf = new FileInfo(path);
        myfileinf.Delete();

    }


}

}

0
using System.IO;

string[] filePaths = Directory.GetFiles(@"c:\MyDir\");

foreach (string filePath in filePaths)

File.Delete(filePath);

0

메인에서 전화

static void Main(string[] args)
{ 
   string Filepathe =<Your path>
   DeleteDirectory(System.IO.Directory.GetParent(Filepathe).FullName);              
}

이 방법을 추가

public static void DeleteDirectory(string path)
{
    if (Directory.Exists(path))
    {
        //Delete all files from the Directory
        foreach (string file in Directory.GetFiles(path))
        {
            File.Delete(file);
        }
        //Delete all child Directories
        foreach (string directory in Directory.GetDirectories(path))
        {
             DeleteDirectory(directory);
        }
        //Delete a Directory
        Directory.Delete(path);
    }
 }

0
 foreach (string file in System.IO.Directory.GetFiles(path))
 {
    System.IO.File.Delete(file);
 }

 foreach (string subDirectory in System.IO.Directory.GetDirectories(path))
 {
     System.IO.Directory.Delete(subDirectory,true); 
 } 

0

폴더를 삭제하려면 텍스트 상자와 버튼을 사용하는 코드입니다 using System.IO;.

private void Deletebt_Click(object sender, EventArgs e)
{
    System.IO.DirectoryInfo myDirInfo = new DirectoryInfo(@"" + delete.Text);

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

-2
private void ClearDirectory(string path)
{
    if (Directory.Exists(path))//if folder exists
    {
        Directory.Delete(path, true);//recursive delete (all subdirs, files)
    }
    Directory.CreateDirectory(path);//creates empty directory
}

2
아래의 "삭제 및 재 작성"은 유지와 동일하지 않으며 모든 ACL 사용자 정의가 유실됩니다.
Marc L.

나는 이후에 생성되지 않는 폴더 문제에 대한 및 ACL 사용자 정의 및 실행 된 신경 쓰지 않았다 나는 이후이 매우 비슷한 시도했습니다Directory.CreateDirectory
SD에 JG

-3

해야 할 것은로 설정 optional recursive parameter하는 것 True입니다.

Directory.Delete("C:\MyDummyDirectory", True)

.NET 덕분에. :)


3
디렉토리 자체도 삭제됩니다.
rajat

-4
IO.Directory.Delete(HttpContext.Current.Server.MapPath(path), True)

당신은 그 이상을 필요로하지 않습니다


2
잘못된 ... 루트 디렉토리도 삭제됩니다.
L-Four
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.