Bagaimana cara membuat banyak direktori dari satu jalur penuh dalam C #?

162

Jika Anda memiliki path lengkap seperti: "C:\dir0\dir1\dir2\dir3\dir4\"bagaimana cara terbaik Anda mengimplementasikannya sehingga semua direktori ada?

Apakah ada metode untuk ini di BCL? Jika tidak, apa cara paling elegan untuk melakukan ini?

Joan Venge
sumber

Jawaban:

346

Saya akan menelepon Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Berlawanan dengan kepercayaan populer, Directory.CreateDirectorysecara otomatis akan membuat direktori induk mana pun yang tidak ada.
Dengan kata-kata MSDN,Creates all directories and subdirectories as specified by path.

Jika seluruh jalur sudah ada, itu tidak akan melakukan apa-apa. (Tidak akan melempar pengecualian)

Slaks
sumber
3
Terima kasih, saya tidak tahu ini. Path harus berupa path direktori, bukan path file, kan?
Joan Venge
27
@ Joan: Ya; Anda bisa menelepon Path.GetDirectoryNameuntuk mendapatkannya.
SLaks
2
Seharusnya disebut CreateDirectoryTree
OldSchool
3

Buat direktori dari filepath lengkap

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;
}
Alejandro Aranda
sumber