C# 文件流和创建文件夹

C# 文件流和创建文件夹,c#,filestream,C#,Filestream,只是一个简单的问题。我用的是这样的东西 FileStream fs = new FileStream(fileName, FileMode.Create); 我想知道是否有一个参数,我可以传递给它,迫使它创建文件夹,如果它不存在。此时,如果找不到文件夹,将引发异常 如果有更好的方法,那么使用FileStream我愿意接受这些想法。使用: Directory.CreateDirectory方法(字符串) 创建路径指定的所有目录和子目录 例如: string fileName = @"C:\Use

只是一个简单的问题。我用的是这样的东西

FileStream fs = new FileStream(fileName, FileMode.Create);
我想知道是否有一个参数,我可以传递给它,迫使它创建文件夹,如果它不存在。此时,如果找不到文件夹,将引发异常

如果有更好的方法,那么使用
FileStream
我愿意接受这些想法。

使用:

Directory.CreateDirectory方法(字符串)

创建路径指定的所有目录和子目录

例如:

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))
{
    // ...
}
(返回文件名的目录部分。)

类似于:

void EnsureFolder(string path)
{
    string directoryName = Path.GetDirectoryName(path);
    // If path is a file name only, directory name will be an empty string
    if (directoryName.Length > 0)
    {
        // Create all directories on the path that don't already exist
        Directory.CreateDirectory(directoryName);
    }
}

假设我有/folder1/folder2/folder3/folder4/file.txt作为文件名,而folder1不存在。上面的4个文件夹都会创建吗?@Ash Burlaczenko:我刚刚测试了它,是的,它会创建。如果文件夹已经存在,而你运行了它,会发生什么line@AshBurlaczenko:Directory.CreateDirectory如果目录已经存在,则不会引发异常。在这种情况下,它什么也不做。如果输入文件名不包含路径(例如“text1.txt”),则会引发异常。在这种情况下,Path.GetDirectoryName将返回一个空字符串,Directory.CreateDirectory将抛出ArgumentException。为什么这样做的投票次数较少,这是检查和创建文件夹的好方法。@ChaitanyaGadkari可能是因为Directory.CreateDirectory在目录已经存在时不会抛出异常;因此,对于大多数面临类似问题的人来说,dtb的答案是简洁的。