วิธีการสร้างหลายไดเรกทอรีจากเส้นทางแบบเต็มเดียวใน C #?


162

หากคุณมีเส้นทางแบบเต็มเช่น: "C:\dir0\dir1\dir2\dir3\dir4\"คุณจะนำมันไปใช้อย่างไรให้ไดเรกทอรีทั้งหมดปรากฏอยู่ได้อย่างไร?

มีวิธีการนี้ใน BCL หรือไม่? ถ้าไม่เป็นวิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

คำตอบ:


346

Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\")ฉันจะเรียก

ตรงกันข้ามกับความเชื่อที่นิยมDirectory.CreateDirectoryจะสร้างไดเรกทอรีหลักใดที่ไม่มีอยู่โดยอัตโนมัติ
ในคำพูดของ MSDNCreates all directories and subdirectories as specified by path.

หากเส้นทางทั้งหมดมีอยู่แล้วมันจะไม่ทำอะไรเลย (มันจะไม่เกิดข้อยกเว้น)


3
ขอบคุณฉันไม่รู้ เส้นทางต้องเป็นเส้นทางไดเรกทอรีไม่ใช่เส้นทางไฟล์ใช่มั้ย
Joan Venge

27
@Joan: ใช่; คุณสามารถโทรหาPath.GetDirectoryNameเพื่อรับมัน
slaks

2
มันควรจะมีชื่อว่า CreateDirectoryTree
OldSchool

3

สร้างไดเรกทอรีจากเส้นทางไฟล์ที่สมบูรณ์

private String EvaluatePath(String path){

    try
    {
        String folder = Path.GetDirectoryName(path);
        if (!Directory.Exists(folder))
        {
            // Try to create the directory.
            DirectoryInfo di = Directory.CreateDirectory(folder);
        }
    }
    catch (IOException ioex)
    {
        Console.WriteLine(ioex.Message);
        return "";
    }
    return path;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.