File.CreateText / File.AppendText与File.AppendAllText

sha*_*dad 1 .net c# file

为了使用File.CreateText()File.AppendText()您必须:

  1. 通过调用这些方法之一来打开流
  2. 写消息
  3. 关闭流
  4. 配置流

为了使用它,只需使用它,它还将创建文件(如果尚不存在)。File.AppendAllText()

我正在谈论.Net 3.5

当时是否有任何理由像上述第一种方法那样进行?

Cee*_* it 5

当我们看一下实现时File.AppendAllText我们发现它是一个快捷方式,实现如下:

using (StreamWriter sw = new StreamWriter(path, true, encoding))
    sw.Write(contents);
Run Code Online (Sandbox Code Playgroud)

其他方法打开一个流并返回它,然后由调用者编写,传递,等等。

总是很难问到这种设计决定背后的原因。在这种情况下,这似乎很明显:“ All”前缀表明调用方将具有应立即写入的完整字符串,并且不需要保持流打开-为方便起见添加了它,因为这是一个频繁使用案例。

为此,我从Petzold找到了这句话:

但是,在.NET 2.0中,一些附加的静态方法被添加到File类中,这在很大程度上具有意义。这些方法使您可以在一条语句中打开,读取(或写入)和关闭文件。

完全删除以前的方法而使用简化的方法将意味着灵活性上的损失-开发人员仍然会遇到需要使用流的情况。