2010-09-12 13 views
48

Sadece hızlı bir soru. Ben buna yoksa klasör oluşturmak için zorlamak için ben geçebileceği bir parametre olup olmadığını merak buFileStream ve klasörler oluşturma

FileStream fs = new FileStream(fileName, FileMode.Create); 

gibi bir şey kullanıyorum. Şu anda klasör bulunamazsa bir istisna atılır.

Daha iyi bir yöntem varsa FileStream kullanarak fikirlere açığım.

cevap

97

Kullanım Directory.CreateDirectory:

Directory.CreateDirectory Yöntemi (String)

yolu tarafından belirtilen tüm dizinleri ve alt dizinleri oluşturur.

Örnek:

string fileName = @"C:\Users\SomeUser\My Documents\Foo\Bar\Baz\text1.txt"; 

Directory.CreateDirectory(Path.GetDirectoryName(fileName)); 

using (FileStream fs = new FileStream(fileName, FileMode.Create)) 
{ 
    // ... 
} 

(Path.GetDirectoryName döner dosya adının dizin bölümü.)

+1

i var ki/klasor1/klasor2/folder3/Dosya4/dosya.txt olarak dosya adı ve klasör1 mevcut değil. Yukarıdakiler 4 klasörün tamamını oluşturur. –

+0

@Ash Burlaczenko: Sadece test ettim, evet, öyle. – dtb

+0

Klasör zaten varsa ve –

14

şey gibi:

void EnsureFolder(string path) 
{ 
    string directoryName = Path.GetDirectoryName(path); 
    if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) 
    { 
     Directory.CreateDirectory(directoryName); 
    } 
} 
+1

Neden bu kadar az değil, klasörü kontrol etmek ve oluşturmak için iyi bir yol. –

+0

@ChaitanyaGadkari muhtemelen Directory.CreateDirectory, dizin zaten varsa bir istisna atmadığı için; Dtb'nin cevabı, çoğu insanın benzer bir problemle karşı karşıya kalmasıdır. – nullable