繁体   English   中英

FileStream创建

[英]FileStream Create

这是语法

 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创建Stream。

所以我说:如果您不关心其他选项,请寻求可读性并使用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,它包装了所有那些默认缓冲区和params ..你将有一个更好的灵活性和管理我的新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 (var fs = new FileStream(strFilePath, FileMode.Create))
{
    //do some stuff
}

第一个创建或覆盖文件,共享读访问权限第二个,无。 因此,您是否希望在处理文件时允许访问权限。

对于第一个,你有更多的选择:句柄,文件访问,文件模式,int缓冲区大小,....但是第二个你可以做的选项较少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM