Различие между 'файлом. Открытый ()' и 'новый FIleStream ()'

Каково различие, если таковые имеются?

21
задан anthony 3 March 2010 в 22:07
поделиться

3 ответа

Нет.

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 при добавлении или Прочтите, напишите иначе).

При этом это деталь реализации, а не часть документации . Технически будущий выпуск .NET Framework может использовать другую реализацию, хотя я считаю это маловероятным.

24
ответ дан 29 November 2019 в 06:56
поделиться

Подобное дублирование очень редко встречается в .NET framework. Но есть одна история, рассказанная Кшиштофом Цвалиной в этой лекции. Они провели исследование удобства использования ранней версии фреймворка, попросив группу опытных (но в остальном не разбирающихся в .NET) программистов написать код с использованием классов FileStream и StreadReader/Writer.

Все прошло не очень хорошо, они получили 100-процентный процент неудач. В ответ они добавили методы в класс System.IO.File, используя подход "наиболее вероятное попадание в яму успеха".

Классное видео, если вам интересны причины, по которым фреймворк выглядит так, как он выглядит.

Лучше опубликуйте реальный ответ: метод File.Open() вызывает конструктор FileStream, передавая значения для FileAccess и FileShare (если вы их не указали), которые, скорее всего, сделают правильную вещь. А это FileAccess.ReadWrite и FileShare.None.

23
ответ дан 29 November 2019 в 06:56
поделиться

File.Open () - удобный метод. Внутренне это реализовано как:

public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
    return new FileStream(path, mode, access, share);
}
5
ответ дан 29 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: