【问题标题】:Creating a File that the Path does not exists?创建路径不存在的文件?
【发布时间】:2010-11-22 05:04:28
【问题描述】:

我无法解决这个问题。仅当路径存在时,我才能使用File.Create...File.CrateText 等创建文件。如果没有,我们将不会写入该文件并返回错误。如何创建路径?

【问题讨论】:

标签: c# file path


【解决方案1】:

试试

Directory.CreateDirectory(@"C:\MyApp\MySubDir\Data")

http://www.devx.com/vb2themax/Tip/18678

【讨论】:

  • 因为这篇文章很可能在这里解决您的问题,所以额外的 MSDN 信息:msdn.microsoft.com/en-us/library/as2f1fez.aspx
  • 我们如何检查路径是否存在?或者我们只是调用这个函数。
  • 阅读! MSDN 说:如果文件夹已经存在,CreateDirectory 什么都不做。
【解决方案2】:

您需要先创建目录。它将创建您发送它的路径中不存在的所有子目录。这是一个相当强大的功能。

Directory.CreateDirectory(filePath);

如果您不知道目录是否存在,您可以使用 Directory.Exists。但不适用于这种情况,因为这毫无意义。 MSDN 指出,如果目录当前存在,则 CreateDirectory 不执行任何操作。但是,如果您出于其他原因想要检查目录是否存在,您可以使用:

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

【讨论】:

  • 如果 filePath 是完整路径(文件夹 + 文件名),这将不起作用 - 它会烦人地使用所需文件的名称创建目录(例如,如果 filePath 是 pathTo\helloWorld.txt 它'将在文件夹pathTo 中创建一个名为helloWorld.txt 的文件夹。
  • @DanielElkington 你确定吗?
  • 前几天我测试了这个,结果就是这样。 Ashraf Alam 使用 FileInfo 类来拆分目录名称的答案是有效的。但是,如果您知道路径只是一个目录,那么这将起作用。
【解决方案3】:
Directory.CreateDirectory("path");

【讨论】:

    【解决方案4】:

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

            FileInfo fileInfo = new FileInfo(fileFullPath);
    
            if (!fileInfo.Exists)
                Directory.CreateDirectory(fileInfo.Directory.FullName);
    
    
            //create the file ...
    

    【讨论】:

      【解决方案5】:

      下面应该也可以工作

          FileInfo fileInfo = new FileInfo(fileFullPath);
          if (!fileInfo.Directory.Exists) fileInfo.Directory.Create()
      

      处理fileinfo的目录,而不是静态目录类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-28
        • 2021-03-24
        • 1970-01-01
        • 2017-09-25
        相关资源
        最近更新 更多