通常,如果您尝试移动到存在的文件,File.Move会抛出一条消息"当该文件已存在时无法创建文件".
我得到File.Move抛出的情况
"该文件存在"
System.IO.__Error.WinIOError在执行之后直接抛出此异常File.Move
它正在尝试将文件移动到网络驱动器.
经过一些搜索后,唯一能给出这个特定消息的东西似乎是Path.GetTempFileName()- 如果临时文件夹已满,可以抛出这个.
我没有使用GetTempFileName,临时文件夹不满.
有谁知道可能导致这种情况的原因,或者如何排除故障?(这是在托管服务器上,只有管理公司才能访问,我不能在这里显示专有代码).
这是来自 Windows 的,不同的情况有不同的错误代码。第二个是 ERROR_ALREADY_EXISTS,当文件从同一驱动器上的一个目录移动到另一个目录时,“当该文件已存在时无法创建该文件” 。这是一个非常简单的操作,只需要移动目录项即可。
第一个是 ERROR_FILE_EXISTS,当文件从一个驱动器移动到另一个驱动器时“文件存在” 。这是一个更加复杂的操作,还必须复制文件数据。换句话说,它会回退到 File.Copy(string, string, bool) 的等效项,并将最后一个覆盖参数设置为 false。它不使用相同的错误代码有点奇怪。差异对于文件系统驱动程序来说是一个大问题,但对于您的程序来说却不是。否则,您只会得到一个非常通用的 IOException,而不是一个更具体的 IOException,它将文件操作事故分解为更细粒度的异常。
这实际上不是问题,因为您在代码中无能为力,您需要人工的帮助来纠正问题。除非您在自己的代码中采取特定的先发制人措施,否则要么在目标文件已存在的情况下避免移动,要么首先实际删除目标文件。请注意,这两种方法都不是 100% 可靠的解决方法,在您删除文件后、移动之前,另一个进程极有可能再次创建该文件。在多任务操作系统上,使文件操作完全可靠是相当困难的。
| 归档时间: |
|
| 查看次数: |
2907 次 |
| 最近记录: |