File.CreateText / File.AppendText与File.AppendAllText

时间:2017-02-23 12:01:29

标签: c# .net file

要使用File.CreateText()File.AppendText(),您必须:

  1. 通过调用其中任何一种方法打开流
  2. 写信息
  3. 关闭流
  4. 处理流
  5. 要使用File.Append All Text(),您只需使用它,如果文件尚不存在,它也会创建该文件。

    我在谈论.Net 3.5

    当时有没有理由像上面第一种方法那样做?

1 个答案:

答案 0 :(得分:4)

当我们查看File.AppendAllText的{​​{3}}时,我们发现它是一个快捷方式,实现方式如下:

using (StreamWriter sw = new StreamWriter(path, true, encoding))
    sw.Write(contents);

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

总是很难问这样的设计决定背后的原因。在这种情况下,似乎很明显:" All"中缀表示调用者有一个应该立即写入的完整字符串,并且不需要保持流打开 - 为方便起见,它已被添加,因为这是一个常见的用例。

为了支持这一点,我从implementation找到了这句话:

  

但是,在.NET 2.0中,一些额外的静态方法被添加到File类中,这些方法非常有意义。这些方法允许您在一个语句中打开,读取(或写入)和关闭文件。

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