https://www.cnblogs.com/whr2071/p/16070974.html
出现原因
使用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)
我选的是第一种,就觉得同时能被多个进程读写可能水很深,我把握不住。