Такое дублирование очень редко встречается в .NET Framework. Но есть история об этом, рассказанная Кшиштофом Квалиной в этой лекции . Они провели исследование юзабилити на ранних версиях фреймворка, попросив группу опытных (но не зависимых от .NET) программистов написать некоторый код с использованием классов FileStream и StreadReader / Writer.
Всё пошло не так, они получили 100% отказов. В ответ они добавили методы к классу System.IO.File, используя подход «скорее всего, попадет в пропасть успеха».
Кстати, классное видео, если вы вообще не понимаете, почему фреймворк выглядит так, как он выглядит.
Лучше опубликовать реальный ответ: метод File.Open () вызывает конструктор FileStream, передавая значения для FileAccess и FileShare (если вы их не указали), которые, скорее всего, поступят правильно. Что такое FileAccess.ReadWrite и FileShare.None.