Какая разница, если таковая имеется?
Разница между "File.Open()" и "new FIleStream()"
Ответ 1
Отсутствует.
File.Open - внутренне, не более:
public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(path, mode, access, share);
}
Если вы не используете перегрузку, которая указывает FileAccess и FileShare, она указывает это для вас (используя FileShare.None и FileAccess.Write на append или ReadWrite в противном случае).
Говоря это, это деталь реализации, а не часть документации. Технически, будущий выпуск .NET Framework может использовать другую реализацию, хотя я нахожу это маловероятным.
Ответ 2
Этот вид дублирования очень редко встречается в .NET framework. Но есть история об этом, рассказанная Krzysztof Cwalina в этой лекции. Они изучили юзабилити на ранней версии фреймворка, попросив нескольких опытных программистов (но в противном случае .NET agnostic) написать код с помощью классов FileStream и StreadReader/Writer.
Все прошло неплохо, они получили 100% -ный показатель неудачи. Они ответили добавлением методов в класс System.IO.File, используя подход "скорее всего, чтобы попасть в путь успеха".
Прохладный видеоролик, если вы вообще в том, что структура выглядит так, как выглядит.
Лучше отправить реальный ответ: метод File.Open() вызывает конструктор FileStream, передавая значения для FileAccess и FileShare (если вы их не укажете), которые, скорее всего, будут делать правильную вещь. Что такое FileAccess.ReadWrite и FileShare.None.
Ответ 3
File.Open()
- метод удобства. Внутренне он реализуется как:
public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(path, mode, access, share);
}