为什么NET movefile有时会将源文件留在硬盘上

时间:2016-04-05 21:37:30

标签: .net vb.net file-move

我有一种情况,不可否认很容易修复,我只有一行代码如下: -

My.Computer.FileSystem.MoveFile(f_source, f_dest, True)

对于覆盖选项,则为true。

我在批量文件移动过程中有一个实例,有时候,有时会留下源文件,但目标文件会被成功复制。

它周围有错误捕获(VB.NET/try/catch),但没有触发错误。它似乎只发生在远程(VPN)访问期间,现场的相同操作没有表现出来。

我怀疑它是在某种缓冲区填充期间发生的,因为移动是来自移除驱动器,这是一个圆形的Robin。

我已经在移动后添加了一个检查以查看是否存在这两个文件,并在它们执行时删除源。我可以确认这已被触发,到目前为止,它已经解决了我的问题。

我没有使用任何背景或线程操作。令我感到惊讶的是,控件正在回传给我的程序,并且未完成且没有错误。这是一个已知的问题吗?

我还没有测试过其他的movefile选项,当然,我总是可以复制然后删除所以它没什么大不了但它确实让我抓狂了。

1 个答案:

答案 0 :(得分:2)

我认为它遵循System.IO.File.Move方法的相同规则。在评论中,它说:

  

如果您尝试跨磁盘卷移动文件并且该文件正在使用中,则该文件将复制到目标,但不会从源中删除。

I / O中可能存在某种类型的延迟,尤其是在进行任何类型的文件扫描(防病毒等)的情况下。