簡體   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