FileStream Vs System.IO.File.WriteAllText при записи в файлы

Я видел много примеров/руководств о VB.NET или С#.NET, где автор использует FileStream для записи/чтения из файла. Мой вопрос в том, есть ли какая-либо польза для этого метода, а не при использовании System.IO.File.Read/Write? Почему большинство примеров используют FileStream, когда то же самое можно достичь, используя только одну строку кода?

Ответы

Ответ 1

FileStream дает вам немного больше контроля над написанием файлов, что может быть полезно в некоторых случаях. Он также позволяет держать дескриптор файла открытым и непрерывно записывать данные без отказа от контроля. Некоторые варианты использования потока:

  • Несколько входов
  • Данные в реальном времени из потока памяти/сети.

System.IO.File содержит обертки вокруг операций с файлами для основных действий, таких как сохранение файла, чтение файла в строки и т.д. Это просто абстракция над FileStream.

Из исходного кода .NET вот что WriteAllText делает внутренне:

private static void InternalWriteAllText(string path,
    string contents, Encoding encoding)
{
    Contract.Requires(path != null);
    Contract.Requires(encoding != null);
    Contract.Requires(path.Length > 0);
    using (StreamWriter sw = new StreamWriter(path, false, encoding))
        sw.Write(contents);
}