【发布时间】:2010-03-03 22:07:06
【问题描述】:
有什么区别,如果有的话?
【问题讨论】:
有什么区别,如果有的话?
【问题讨论】:
无。
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 on append 或 ReadWrite 否则)。
话虽如此,这是一个实现细节,而不是documentation 的一部分。从技术上讲,未来的 .NET Framework 版本可能使用不同的实现,尽管我认为这不太可能。
【讨论】:
这种重复在 .NET 框架中非常少见。但是有一个关于这个的故事,由 Krzysztof Cwalina 在this lecture 中讲述。他们对框架的早期版本进行了可用性研究,请一群有经验的(但与 .NET 无关的)程序员使用 FileStream 和 StreadReader/Writer 类编写一些代码。
它并不顺利,他们得到了 100% 的失败率。他们的回应是向 System.IO.File 类添加方法,使用“最有可能落入成功的坑”的方法。
顺便说一句,很酷的视频,如果您完全了解框架看起来如此的原因。
最好发布一个真正的答案:File.Open() 方法调用 FileStream 构造函数,传递最有可能做正确事情的 FileAccess 和 FileShare(如果您没有指定它们)的值。即 FileAccess.ReadWrite 和 FileShare.None。
【讨论】:
File.Open() 是一种方便的方法。在内部它是这样实现的:
public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(path, mode, access, share);
}
【讨论】: