使用 File.Copy() 将文件复制到网络共享文件夹时出现非确定性错误
本文关键字:文件夹 共享文件 错误 确定性 非确定 共享 网络 Copy File 复制 文件 | 更新日期: 2023-09-27 17:55:32
我正在使用 C#File.Copy() 函数将几个备份文件从本地文件夹复制到网络共享文件夹,其中包括大于 1 TB 的小型到大型文件。以前这效果很好。但最近,我在不同的时间面临不同类型的异常。我还尝试使用 NET USE 命令创建共享路径连接,即使凭据相同即可解决此问题。
File.Copy(sourceFilePath, destinationFilePath, overwrite);
我得到的例外是:
- 错误:找不到文件。
- 错误:句柄无效。
- 错误:当前没有可用于处理登录请求的登录服务器。
- 错误:指定的网络名称不再可用。
注意:这些异常不适用于无效的文件路径。因为在复制文件的某些部分后会发生异常,并且之前对相同的文件使用了相同的代码。
有人有解决这种情况的想法吗?
复制非常大的文件时,Windows 存在已知问题。例如,请参阅重新访问的Windows文件复制错误。问题似乎是Windows想要缓存文件,并且为此付出了英勇的努力。它最终将几乎所有内存分配给缓存,最终导致致命的抖动。这将在另一个系统(尝试复制文件)上导致非确定性错误。
解决这个问题的方法是通过调用 CopyFileEx
来复制文件而不进行缓冲。不幸的是,没有直接的方法可以从.NET Framework做到这一点。所以我编写并发布了一些代码。请参阅更好的文件.复制替换。