Nasıl C # tek bir tam yoldan birden çok dizin oluşturmak için?


162

Eğer tam bir yolunuz varsa: "C:\dir0\dir1\dir2\dir3\dir4\"en iyi nasıl uygularsınız, böylece tüm dizinler mevcut olur mu?

BCL'de bunun için bir yöntem var mı? Değilse, bunu yapmanın en zarif yolu nedir?

Yanıtlar:


346

Arardım Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Popüler inanışın aksine, Directory.CreateDirectoryhangi ana dizinler yoksa otomatik olarak oluşturulur.
MSDN'nin sözleriyle,Creates all directories and subdirectories as specified by path.

Tüm yol zaten mevcutsa, hiçbir şey yapmaz. (İstisna atmaz)


3
Teşekkürler, bunu bilmiyordum. Yol bir dosya yolu değil, bir dizin yolu olmalıdır, değil mi?
Joan Venge

27
@Joan: Evet; Path.GetDirectoryNamealmak için arayabilirsiniz .
SLaks

2
CreateDirectoryTree
OldSchool

3

Tam dosyayolundan dizin oluşturma

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;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.