You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

File.Move报“找不到文件”错误的排查与解决尝试

解决File.Move远程共享目录下偶发"Could not find file..."异常问题

问题场景

  • 服务A监控远程共享目录内的新文件,发现文件后通过cmd的ren命令修改文件扩展名,随后触发服务B执行操作
  • 服务B调用File.Move再次修改文件扩展名,偶尔会触发System.IO.File.InternalMove抛出"Could not find file..."错误,但实际文件确实存在

排查过程

  1. 最初怀疑是网络不稳定导致,但异常出现频率过高,排除该可能性
  2. 对比.NET源码中相关方法逻辑:
    • File.InternalMove:先通过InternalExists检查文件是否存在,再调用Win32Native.MoveFile
    • FileInfo.MoveTo:无前置文件存在性检查,直接调用Win32Native.MoveFile
  3. 尝试改用FileInfo.MoveTo方法,异常仍会出现
  4. 最终定位根因:服务A启动包含ren命令的批处理脚本后,未等待脚本执行完成就触发了服务B;若服务B响应过快,此时ren的重命名操作还未完成,后续的文件移动操作就会报错

解决方案与结果

  • 尝试等待批处理执行完成:确实解决了异常,但带来了明显的性能损耗
  • 最终改用File.Move方法:目前未再复现异常,处于持续观察阶段

内容的提问来源于stack exchange,提问作者Michal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:42:19