2010-09-12 166 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