C# 报错:xxx正由另一进程使用,因此该进程无法访问此文件

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结束后自动释放。

在读取文件时,将FileStream定义在using语句中,可以在执行完毕后自动释放,以免长时间占用

using(FileStream fileStream = new FileStream(@"D:1.xuan",FileMode.OpenOrCreate))
{
    //读取文件
}


第2种就是手动关闭fst.Close();
第二种思路:
不以只读形式打开就完了,也就是修改上述第四个参数
System.IO.FileStream fst = new System.IO.FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 8192)
我选的是第一种,就觉得同时能被多个进程读写可能水很深,我把握不住。

posted @ 2023-06-17 15:09  yinghualeihenmei  阅读(1739)  评论(0)    收藏  举报