【问题标题】:FileNotFoundException in File.AppendAllTextFile.AppendAllText 中的 FileNotFoundException
【发布时间】:2021-09-28 15:41:20
【问题描述】:

我正在阅读来自 msdn 的 File.AppendAllText 方法

http://msdn.microsoft.com/en-us/library/ms143356.aspx

我看到他们已将FileNotFoundException 列在该方法的可能例外列表中,但根据同一页面上有关方法的描述

打开文件,将指定的字符串附加到文件,然后关闭文件。 如果文件不存在,这个方法会创建一个文件, 将指定的字符串写入文件,然后关闭文件。

这部分

如果文件不存在,这个方法会创建一个文件

似乎这个方法永远不会抛出这个异常。

【问题讨论】:

  • 我想它可能由于安全原因或类似原因无法创建文件
  • @Sayse 有一个不同的例外。
  • FileNotFoundException 是在目录不存在的情况下
  • @Sayse 有UnauthorizedAccessException
  • @OneManCrew DirectoryNotFoundException

标签: c# io


【解决方案1】:

如果你看一下(比如说)Mono 的实现(它与微软的兼容),所有File.AppendAllText 最终都会做(除了参数检查)用你的路径创建一个StreamWriter 并调用一个Write on那个对象。

据我所知,使用的构造函数和方法都没有列出来抛出FileNotFoundException,所以它可能是一个文档错误。

【讨论】:

  • 可能是文档错误,是的;我看不出该方法应该以任何方式抛出异常。
  • 好问题和好答案:)
【解决方案2】:

这个帖子可能有点老了,但是上面One-man-crew给出的正确答案被其他人忽略了。 事实是 FileNotFoundException 不是拼写错误。它存在,我明白了。 原因在异常消息中,如下所示: “找不到路径的一部分”。 如前所述,File.AppendAllText 将打开 如果文件不存在,但它必须有一个有效路径

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。问题是我提供的路径不可用。

    AppendAllLines 或 AppendAllText 不会创建路径,它只会创建文件。

    为了解决这个问题,我使用 System.IO.Directory.CreateDirectory("Folder Path"]) 创建了路径。

    然后我使用了 AppendAllLines 和 AppendAllText 方法。

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 2014-11-04
      • 2014-09-27
      • 2014-09-11
      • 2019-01-18
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多