FileStream创建

时间:2012-08-21 14:22:26

标签: c# filestream

这是语法

 FileStream fs = new FileStream(strFilePath, FileMode.Create);

与此相同?

FileStream fs = File.Create(strFilePath);

什么时候,哪一个更好?

6 个答案:

答案 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缓冲区大小,....但是第二个你可以做的选项较少。