FileStream和创建文件夹

Ash*_*nko 55 c# filestream

只是一个简单的问题.我正在使用这样的东西

FileStream fs = new FileStream(fileName, FileMode.Create);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个参数我可以传递给它以强制它创建文件夹,如果它不存在.如果找不到文件夹,则抛出异常.

如果有更好的方法,那么使用FileStream我是开放的想法.

dtb*_*dtb 119

使用Directory.CreateDirectory:

Directory.CreateDirectory方法(String)

创建path指定的所有目录和子目录.

例:

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))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

(Path.GetDirectoryName返回文件名的目录部分.)

  • 如果输入文件名不包含路径(例如"text1.txt"),则抛出异常的一个边缘情况.在这种情况下,Path.GetDirectoryName将返回一个空字符串,而Directory.CreateDirectory将返回一个ArgumentException. (5认同)
  • 如果文件夹已经存在并且您运行该行会发生什么 (4认同)
  • @Ash Burlaczenko:如果目录已存在,Directory.CreateDirectory不会抛出异常.在这种情况下它什么都不做. (3认同)
  • 假设我有 /folder1/folder2/folder3/folder4/file.txt 因为文件名和folder1不存在。以上将创建所有 4 个文件夹。 (2认同)

Joe*_*Joe 15

就像是:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @ChaitanyaGadkari 可能是因为如果目录已经存在,Directory.CreateDirectory 不会抛出异常;所以 dtb 的回答对于大多数面临类似问题的人来说是简洁的。 (2认同)