这与另一个SO问题有关:如何覆盖现有文件。
最佳答案是:
FileStream file = File.Open("text.txt", FileMode.Create);
我的回答是这样的:
FileStream fs = System.IO.File.Create(fileName);
截至我撰写此问题时,赞成Open
的得票数为14-0。
如果投票是好与坏解决方案的指标,这让我有些疑惑:
我是否忽略了一些使选择
Open
比选择Create
更好的方法?
对我来说,我非常清楚File.Open("...", FileMode.Create)
的作用,因为我可以将鼠标悬停在FileMode.Create
上,这会告诉我它每次都会创建一个新文件。而File.Create("...")
没有类似的工具提示来表明它会这样做。
我知道只有一个地方可以寻找这个问题的答案:Reflector
结果发现两者都使用了带有完整参数的new FileStream(...
!
好的,我也回答了Create
,但是Open
确实是更好的解决方案,因为你表明你希望打开一个文件,并且使用FileMode.Create
表示如果文件不存在,则创建该文件。我认为这很清楚。
首先,我觉得你可能把它想多了。例如,我倾向于给第一个正确的答案点赞,并忽略其他的回答...所以先到达有一点帮助。
其次,File.Open
读起来比 System.IO.File.Open
更好,尽管它们是相同的。
第三,从可读性的角度来看,Create 不如 Open 语义相关。如果你想创建并打开文件,第一个选项更加明确。