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)
我选的是第一种,就觉得同时能被多个进程读写可能水很深,我把握不住。

posted @ 2022-03-29 11:43  几个酒菜成这样  阅读(5903)  评论(0编辑  收藏  举报