我正在使用System.IO.File.Create創建文件。我不是用流式編寫器寫它,只是創建它。System.IO.File.Create鎖定文件
當應用程序嘗試打開新創建的文件時,前端出現服務器錯誤 - 該文件正在使用中。垃圾收集似乎隨之而來,幾分鐘後一切正常。
現在我知道如果我正在使用Streamwriter,我將不得不關閉它。這同樣適用於創建?
我讀過,打開一個流編寫器的文件,然後立即關閉它會解決這個問題,但它似乎凌亂。有一種更簡單的方法嗎?
我正在使用System.IO.File.Create創建文件。我不是用流式編寫器寫它,只是創建它。System.IO.File.Create鎖定文件
當應用程序嘗試打開新創建的文件時,前端出現服務器錯誤 - 該文件正在使用中。垃圾收集似乎隨之而來,幾分鐘後一切正常。
現在我知道如果我正在使用Streamwriter,我將不得不關閉它。這同樣適用於創建?
我讀過,打開一個流編寫器的文件,然後立即關閉它會解決這個問題,但它似乎凌亂。有一種更簡單的方法嗎?
File.Create
返回FileStream
。你應該像這樣使用它:
using (FileStream fs = File.Create(path))
{
//you can use the filstream here to put stuff in the file if you want to
}
我不得不從來沒有想過。 – Traubenfuchs 2016-07-04 19:14:46
創建文件會打開一個FileStream
,因此鎖定它(File.Create
返回FileStream
)。
您必須關閉此流才能訪問該文件。這是最好用using
語句來完成:
using(FileStream fs = File.Create(path))
{
}
Create
方法將返回一個文件句柄。在重新使用文件之前,文件句柄應該被關閉。請參閱MSDN文章File.Create Method (String)中的詳細信息。
總結:
通過這種方法創建的FileStream對象具有無的默認文件共享值;在原始文件句柄關閉之前,沒有其他進程或代碼可以訪問創建的文件。
使用File.Create
時,返回FileStream
。直到您關閉流或直到FileStream
對象被丟棄(由垃圾收集器的終結者),它將保持打開並鎖定狀態。
FileStream
實現IDisposable
這樣你就可以做到以下幾點:
using(FileStream fs = File.Create(filename))
{
// Do stuff like write to the file
}
的using
說法是「語法糖」,使編譯器生成的代碼,在功能上等同於:
FileStream fs = File.Create(filename)
try
{
// Do stuff like write to the file
}
finally
{
fs.Dispose();
}
的Dispose
方法在內部調用Close
。
我所用: System.IO.File.Create(sFullFileName);
以上.Create
方法沒有關閉文件
我現在使用: System.IO.File.WriteAllText(sFullFileName, "Uploading");
此方法創建並關閉文件(注:我把字符串「上傳」在文件中,但我相信string.Empty
也將工作。
讓我們看看你的代碼 – Kev 2011-01-13 13:00:09