C# 報錯:xxx正由另一進程使用,因此該進程無法訪問此文件


出現原因

使用FileStream打開一個文件后又想要操作這個文件;

業務場景

我打開這個文件后,獲取其md5,之后再把這個文件移動到指定位置。
后續移動時就會報這個錯。

分析

System.IO.FileStream fst = new System.IO.FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)

FileStream FileMode.Open 默認是一種只讀模式,當然這里寫明了(第四個參數:FileShare.Read)。
使用這種模式打開文件后,就不能再被其他文件操作了,操作就會報錯:xxx正由另一進程使用,因此該進程無法訪問此文件
解決這個問題很簡單,2種思路
第一種思路:
FileStream使用完關閉就可以了。2種關閉方式。
第1種就是我使用的using(){ }。這種,會在using結束后自動釋放。
第2種就是手動關閉fst.Close();
第二種思路:
不以只讀形式打開就完了,也就是修改上述第四個參數
System.IO.FileStream fst = new System.IO.FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 8192)
我選的是第一種,就覺得同時能被多個進程讀寫可能水很深,我把握不住。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM