2010-09-12 165 views
48

只是一個簡單的問題。我使用的是這樣的FileStream和創建文件夾

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

我想知道是否有一個參數,我可以傳遞給它,迫使它來創建文件夾,如果它不存在。此時如果找不到文件夾,則拋出異常。

如果有更好的方法,然後使用FileStream我願意接受。

回答

97

使用Directory.CreateDirectory

Directory.CreateDirectory方法(String)

將創建一個由路徑指定的所有目錄和子目錄。

實施例:

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文件名的目錄部分返回。)

+1

說我有/ folder1中/文件夾2/folder3/folder4/file.txt作爲文件名和folder1不存在。上面將創建所有4個文件夾。 – 2010-09-12 14:29:15

+0

@Ash Burlaczenko:我剛測試過它,是的,它的確如此。 – dtb 2010-09-12 14:30:24

+0

如果該文件夾已存在並且您運行了該行,將會發生什麼 – 2010-09-12 14:37:49

14

是這樣的:

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

這是爲什麼這麼少upvoted,它檢查和創建文件夾的好方法。 – 2015-06-01 11:14:53

+0

@ChaitanyaGadkari可能是因爲如果目錄已經存在,Directory.CreateDirectory不會引發異常;所以對於大多數面臨類似問題的人來說,dtb的答案是簡潔的。 – nullable 2017-05-25 09:51:28