这是语法
FileStream fs = new FileStream(strFilePath, FileMode.Create);
与此相同?
FileStream fs = File.Create(strFilePath);
什么时候,哪一个更好?
答案 0 :(得分:11)
根据JustDecompile的说法,这很重要,因为File.Create
最终会调用:
new FileStream(path,
FileMode.Create,
FileAccess.ReadWrite,
FileShare.None,
bufferSize,
options);
bufferSize
为4096(默认值)和FileOptions.None
(也与FileStream构造函数相同),但FileShare
标志不同:FileStream构造函数创建Stream FileShare.Read
。
所以我说:如果您不关心其他选项,请考虑可读性并使用File.Create(string)
。
答案 1 :(得分:7)
在我看来,我使用这个:
using (FileStream fs = new FileStream(strFilePath, FileMode.Create))
{
fs.Write("anything");
fs.Flush();
}
他们基本上做同样的事情,但是这个创建文件并在创建/写入模式下打开它,你可以设置缓冲区大小和所有参数。
new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None, bufferSize, options);
使用File.Create,它包装了所有这些默认缓冲区和参数。您将使用我的新FileStream(strFilePath,FileMode.Create)获得更好的灵活性和管理方式; 但在这一点上,如果你想要更多的可读性或管理选择,它更像是个人选择!
答案 2 :(得分:2)
第二个只为流使用不同的FileMode:看看这篇文章
http://msdn.microsoft.com/en-us/library/47ek66wy.aspx
管理此方法的默认值!
但是使用using
语句,所以任何资源都将以正确的方式发布!
using (FileStream fs = new FileStream(strFilePath, FileMode.Create))
{
// HERE WHAT YOU WANT TO DO!
}
答案 3 :(得分:1)
他们完全一样。唯一真正的区别是前者可以让你在运行时使用不同的FileMode(用变量控制它),而后者只会进行Create操作。
作为旁注,惯例是处理诸如使用块中的文件流之类的东西,以便在它们超出范围时自动处理它们。
using (var fs = new FileStream(strFilePath, FileMode.Create))
{
//do some stuff
}
答案 4 :(得分:0)
第一个创建或覆盖文件,共享读访问权限为秒,无。因此,您是否希望在处理文件时允许访问权限。
答案 5 :(得分:0)
对于第一个,你有更多的选择:句柄,文件访问,文件模式,int缓冲区大小,....但是第二个你可以做的选项较少。