Почему File.Open намного лучше, чем File.Create, для перезаписи существующего файла? - PullRequest
7 голосов
/ 27 апреля 2009

Это связано с другим SO вопросом , который спрашивает, как перезаписать существующий файл.

Главный ответ таков:

FileStream file = File.Open("text.txt", FileMode.Create);

Мой ответ был таким:

FileStream fs = System.IO.File.Create(fileName);

На момент написания этого вопроса счет был 14-0 в пользу Open.

Если голоса свидетельствуют о хороших или плохих решениях, это заставляет меня задуматься:

Есть ли что-то, в чем я скучаю? эти методы, которые сделали бы это ясно, что гораздо лучше выбрать Open более Create?

Ответы [ 4 ]

7 голосов
/ 27 апреля 2009

Для меня я точно знаю, что делает File.Open("...", FileMode.Create), потому что я могу навести курсор на FileMode.Create, и он говорит мне, что каждый раз будет создавать новый файл. File.Create("...") не имеет такой подсказки, которая указывает, что он сделает это.

2 голосов
/ 27 апреля 2009

Есть только одно место, где, я знаю, вы могли бы найти ответ на этот вопрос: Отражатель

И получается, что оба вызова new FileStream(... с полным набором аргументов!

0 голосов
/ 27 апреля 2009

Во-первых, я думаю, вы слишком много читаете об этом. Я, например, склоняюсь к голосованию первого правильного ответа и пренебрегаю дальнейшими ответами ... так что сначала это поможет.

Во-вторых, File.Open читается лучше, чем System.IO.File.Open, даже если они одинаковы.

В-третьих, Create не так семантически релевантен, как Open, с точки зрения читабельности. Если вы хотите создать и открыть файл, первый будет более явным.

0 голосов
/ 27 апреля 2009

Ну, я тоже ответил Create, но Open действительно лучшее решение, так как вы указываете, что хотите открыть файл, а FileMode.Create указываете, что вы хотите создать файл, если не существует Я думаю, это довольно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...