0

我有一种情况,诚然很容易解决,我有一行代码如下:-

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

true 用于覆盖选项。

我在批量文件移动期间有一个实例,有时,只是有时,源文件被留下,但目标文件被成功复制。

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

我怀疑它是在某种缓冲区填充期间发生的,因为移动是往返于删除驱动器,这有点像循环。

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

我没有使用任何后台或线程操作。我很惊讶控制权在未完成且没有错误的情况下交还给我的程序。这是一个已知问题吗?

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

4

1 回答 1

2

我会假设它在该System.IO.File.Move方法中遵循相同的规则。在对此的评论中,它说:

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

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

于 2016-04-05T22:07:44.497 回答