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)
我选的是第一种,就觉得同时能被多个进程读写可能水很深,我把握不住。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-06-17 将项目放在svn上