创建一个不存在路径的文件?

27

我真的无法解决这个问题。我可以使用File.CreateFile.CreateText等方法创建文件,但前提是路径存在。如果路径不存在,文件将无法写入并返回错误。

如何创建路径呢?


2
可能是重复的问题:如何在C#中从单个完整路径创建多个目录? - Jerry Coffin
5个回答

46

由于此帖解决了您的问题,这里提供额外的MSDN信息:http://msdn.microsoft.com/en-us/library/as2f1fez.aspx - Bdiem
1
我们如何检查路径是否存在?还是我们只是调用这个函数。 - Athiwat Chunlakhan
13
注意!MSDN表示:如果该文件夹已经存在,CreateDirectory不会执行任何操作。 - Bdiem

23

如果您有完整的路径(文件夹+文件名),以下代码将确保所需的目录路径存在(如果它尚不存在)

        FileInfo fileInfo = new FileInfo(fileFullPath);

        if (!fileInfo.Exists)
            Directory.CreateDirectory(fileInfo.Directory.FullName);


        //create the file ...

6
以下方法也应该有效。
    FileInfo fileInfo = new FileInfo(fileFullPath);
    if (!fileInfo.Directory.Exists) fileInfo.Directory.Create()

应使用文件信息目录而非静态目录类。


5
你需要先创建目录。它将在你发送的路径中创建所有不存在的子目录。这是一个非常强大的功能。
Directory.CreateDirectory(filePath);

如果您不知道目录是否存在,可以使用Directory.Exists。但是对于这种情况来说没有意义。MSDN指出,如果目录已经存在,则CreateDirectory不会执行任何操作。但是,如果您想以其他原因检查目录的存在性,可以使用:

  if(Directory.Exists(folder) == false)
    {
    //do stuff  
    }

如果filePath是完整路径(文件夹+文件名),这将无法工作 - 它会令人恼火地创建一个以所需文件命名的目录(例如,如果filePath是pathTo\helloWorld.txt,它将在文件夹pathTo内创建一个名为helloWorld.txt的文件夹)。 - Daniel Elkington
@DanielElkington 你确定吗? - Lloyd Powell
我前几天测试过了,情况就是这样。Ashraf Alam使用FileInfo类来分离目录名称的答案可行。但如果你知道路径只是一个目录,那么这个方法也会起作用。 - Daniel Elkington

2
Directory.CreateDirectory("path");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接