[英]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.