1

我正在使用C# File.Copy()函数将多个备份文件从本地文件夹复制到网络共享文件夹,其中包括大于 1 TB 的小到大文件。以前这工作得很好。但是最近我在不同的时间面临不同类型的异常。我还尝试使用NET USE命令创建共享路径连接,即使凭据相同来解决此问题。

File.Copy(sourceFilePath, destinationFilePath, overwrite);

我得到的例外是:
-错误:找不到文件。
-错误:句柄无效。
-错误:当前没有可用于处理登录请求的登录服务器。
-错误:指定的网络名称不再可用。

注意:这些例外不适用于无效的文件路径。因为在复制文件的某些部分后会发生异常,并且之前为相同的文件工作过相同的代码。

有人有解决这种情况的想法吗?

4

1 回答 1

2

复制非常大的文件时,Windows 存在已知问题。例如,请参阅重新访问 Windows 文件复制错误。问题似乎是 Windows 想要缓存文件,并且为此付出了巨大的努力。它最终将几乎所有内存分配给缓存,最终导致致命的颠簸。这将在另一个系统(试图复制文件)上导致一个不确定的错误。

解决这个问题的方法是通过调用复制文件而不缓冲CopyFileEx。不幸的是,.NET Framework 没有直接的方法可以做到这一点。所以我编写并发布了一些代码。请参阅更好的 File.Copy 替换

于 2013-01-27T13:05:52.950 回答