File.WriteAllText是否真的抛出FileNotFoundException?

时间:2012-02-18 04:21:00

标签: c# file filenotfoundexception

文档说:

// Summary:
//     Creates a new file, writes the specified string to the file, and then closes
//     the file. If the target file already exists, it is overwritten.

第一行,第一句:Creates a new file,以及它列出的例外情况:

//   System.IO.FileNotFoundException:
//     The file specified in path was not found.

在哪种情况下会发生这种情况?如果它总是创建一个文件,那么它不应该抛出FileNotFoundException ...

文档错了吗?或者是否遗漏了<remarks>标签?

1 个答案:

答案 0 :(得分:5)

File.WriteAllText最终致电:

private static void InternalWriteAllText(string path, string contents, Encoding encoding)
{
    using (StreamWriter streamWriter = new StreamWriter(path, false, encoding))
    {
        streamWriter.Write(contents);
    }
}

在调用InternalWriteAllText之前抛出的所有异常抛出ArgumentExceptionArgumentNullException但理论上(因为FileStream可以抛出异常)streamWriter.Write(contents);可能会抛出异常。虽然根据它的作用以及如何打开streamWriter,但非常不可能。

我不一定会说文件错误本身,更多的是MS通过记录(非常罕见的)可能性来覆盖他们的屁股。

来源:使用ILSpy反编译mscorlib v4.0.0.0。

<强>更新

刚检查mscorlib v2.0.0.0,同样的情况除了它包含更少的健全性检查(意味着它基本上直接转换为上面的代码)。