2010-09-12 18 views
48

Po prostu krótkie pytanie. Używam czegoś podobnego do tego:FileStream i tworzenie folderów

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

Zastanawiam się, czy istnieje parametr, który można przekazać do niego, aby zmusić go do utworzenia folderu, jeśli nie istnieje. W tej chwili wyjątek jest rzutowany, jeśli nie znaleziono folderu.

Jeśli jest lepsza metoda niż użycie FileStream Jestem otwarty na pomysły.

Odpowiedz

97

Zastosowanie Directory.CreateDirectory:

Directory.CreateDirectory Method (String)

tworzy wszystkie katalogi i podkatalogi, jak określone przez ścieżkę.

Przykład:

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 zwraca część katalogu nazwy pliku).

+1

że mam/folder1/folder2/folder3/folder4/file.txt, ponieważ nazwa pliku i folder1 nie istnieje. Czy powyższe utworzy wszystkie 4 foldery. –

+0

@Ash Burlaczenko: Właśnie to przetestowałem i tak, to prawda. – dtb

+0

Co by się stało, gdyby folder już istniał i uruchomiłeś tę linię? –

14

coś takiego:

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

Dlaczego jest to mniej uprzywilejowane, jest to dobry sposób na sprawdzenie i utworzenie folderu. –

+0

@ChaitanyaGadkari prawdopodobnie dlatego, że Directory.CreateDirectory nie rzuca wyjątku, jeśli katalog już istnieje; więc odpowiedź dtb jest zwięzła dla większości osób borykających się z podobnym problemem. – nullable

Powiązane problemy