出現原因
使用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)
我選的是第一種,就覺得同時能被多個進程讀寫可能水很深,我把握不住。