“文件 正由另一进程使用,因此该进程无法访问此文件”
看到此问题要明确一点:有两个stream对象对同一个文件发生了操作。如下:
using (fs = new FileStream(targetfilepath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
if (File.Exists(targetfilepath)) File.Delete(targetfilepath);
fs.Write(exceldata, 0, exceldata.Length);
}
{
if (File.Exists(targetfilepath)) File.Delete(targetfilepath);
fs.Write(exceldata, 0, exceldata.Length);
}
上面的代码有问题吗?有问题!
在using块中fs只有在运行到最后一个花括号时在关闭。所以在没有关闭前,又使用File.Exists对同一个文件进行操作,所以仍然会报上面的错误。修改方案有两个:把if语句移除using块,或者在执行if语句之前关闭fs(fs.Close())
本文探讨了在编程过程中遇到的文件访问冲突问题,详细解释了如何通过调整代码逻辑来解决此类并发问题,确保文件操作的顺利进行。

被折叠的 条评论
为什么被折叠?



