File.Create() 故障排除:解決檔案存取錯誤
運行時檔案建立經常遇到存取問題。 一個常見的錯誤是“該進程無法存取該文件,因為該文件正在被另一個進程使用”,即使在使用 File.Create()
.
問題
該場景涉及檢查檔案是否存在並在必要時建立它。 隨後嘗試寫入該文件會導致“文件正在使用”錯誤。 這通常發生在以下程式碼中:
<code class="language-csharp">string filePath = string.Format(@"{0}\M{1}.dat", ConfigurationManager.AppSettings["DirectoryPath"], costCentre); if (!File.Exists(filePath)) { File.Create(filePath); } using (StreamWriter sw = File.AppendText(filePath)) { //write my text }</code>
解
File.Create()
只開啟檔案指標;它不會自動關閉它。 此解決方案需要使用 Close()
建立後立即明確關閉檔案。 此外,對於這種特定情況,使用 File.WriteAllText()
比 File.AppendText()
更直接。
更正後的代碼:
<code class="language-csharp">File.Create(filePath).Close(); File.WriteAllText(filePath, FileText); // Assuming FileText variable holds the text to write</code>
重要考慮因素
雖然此解決方案解決了文件存取問題,但由於其單通道性質,File.WriteAllText()
對於大型文字檔案來說並不是最佳選擇。 對於大文件,請考慮更有效的方法,例如使用 StreamWriter
串流資料以獲得更好的效能。
以上是為什麼 File.Create() 會導致「檔案正在使用」錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!