使用File.Copy()将文件复制到网络共享文件夹时获得非确定性错误

时间:2013-01-24 11:22:03

标签: c# copy

我正在使用 C# File.Copy()功能。以前这很好用。但最近我在不同时间面临不同类型的例外。我还尝试使用 NET USE 命令创建共享路径连接,即使凭据相同也可以解决此问题。

File.Copy(sourceFilePath, destinationFilePath, overwrite);

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

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

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

1 个答案:

答案 0 :(得分:2)

复制非常大的文件时,Windows存在已知问题。例如,请参阅Windows file copy bug revisited。问题似乎是Windows想要缓存文件,并且这样做是英勇的努力。它最终将几乎所有内存分配给缓存,最终导致致命的颠簸。这将导致另一个系统(正在尝试复制文件)出现非确定性错误。

计算方法是通过调用CopyFileEx来复制文件而不进行缓冲。不幸的是,.NET Framework没有直接的方法。所以我编写并发布了一些代码。请参阅A Better File.Copy Replacement