Подтвердить что ты не робот

Разница между "File.Open()" и "new FIleStream()"

Какая разница, если таковая имеется?

4b9b3361

Ответ 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);
}