这是语法吗
FileStream fs = new FileStream(strFilePath, FileMode.Create);
和这个一样吗?
FileStream fs = File.Create(strFilePath);
如果是,哪个更好?
这是语法吗
FileStream fs = new FileStream(strFilePath, FileMode.Create);
和这个一样吗?
FileStream fs = File.Create(strFilePath);
如果是,哪个更好?
根据 JustDecompile 的说法,这确实很重要,因为File.Create
最终会调用:
new FileStream(path,
FileMode.Create,
FileAccess.ReadWrite,
FileShare.None,
bufferSize,
options);
使用bufferSize
4096(默认)和FileOptions.None
(也与 FileStream 构造函数相同),但FileShare
标志不同:FileStream 构造函数使用FileShare.Read
.
File.Create(string)
所以我说:如果您不关心其他选项,请选择可读性和使用。
在我看来,我使用这个:
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 它包装了所有这些默认缓冲区和参数。使用我的 new FileStream(strFilePath, FileMode.Create); 您将获得更好的灵活性和管理方式;但在这一点上,如果您想要更多的可读性或管理选项,它更多的是个人选择!
第二个对流使用不同的 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!
}
他们做同样的事情。唯一真正的区别是,如果您愿意,前者可以让您在运行时使用不同的 FileMode(使用变量控制它),而后者只会执行 Create 操作。
附带说明一下,约定是在 using 块中处理诸如文件流之类的事情,以便在超出范围时自动处理它们。
using (var fs = new FileStream(strFilePath, FileMode.Create))
{
//do some stuff
}
第一个使用共享读取访问权限创建或覆盖文件,第二个使用无。因此,这取决于您是否要允许在处理文件时授予访问权限。
对于第一个,您有更多的选项可以做:句柄、文件访问、文件模式、int 缓冲区大小,....但是对于第二个,您可以做的选择更少。