为什么File.Open比File.Create更好地覆盖现有文件?

时间:2009-04-27 14:29:26

标签: c# file

这与其他SO question有关,它询问如何覆盖现有文件。

最佳答案是:

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

我的回答是:

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

当我写这个问题的时候,这个数字是14-0支持Open

如果投票表明好与坏的解决方案,这让我有点疑惑:

  

我是否缺少一些东西   这些方法会成功   显然,选择要好得多   Open超过Create

4 个答案:

答案 0 :(得分:6)

对我来说,我确切知道File.Open("...", FileMode.Create)的确是什么,因为我可以将鼠标悬停在FileMode.Create上,它告诉我每次都会创建一个新文件。 File.Create("...")没有此类工具提示,表明它会执行此操作。

答案 1 :(得分:2)

我知道只有一个地方可以找到这个答案:Reflector

事实证明,调用new FileStream(...都有一整套参数!

答案 2 :(得分:0)

好吧,我也回答了Create,但是Open确实是更好的解决方案,因为您表示要打开文件并且FileMode.Create表明您希望如果文件尚不存在,则创建该文件。我认为这很清楚。

答案 3 :(得分:0)

首先,我认为你可能正在阅读太多内容。例如,我倾向于对第一个正确的答案进行投票,而忽略了任何进一步的答案......所以先到达那里会有所帮助。

其次,File.Open读取的内容优于System.IO.File.Open,即使它们是相同的。

第三,从可读性的角度来看,Create不像Open那样具有语义相关性。如果要创建AND打开文件,则第一个更明确。