我很想知道是什么使Robocopy(强大的文件副本)如此快,坚固。任何身体都知道用于机器人的API/ALGO是什么?有人学习机器人吗?

我要问,因为我必须编写一种方法(在.NET/C#中),该方法将快速复制目录/文件,而无需错误...数据量可以达到15GB,由于各种原因,我不能简单地调用Robocopy。

谢谢!

有帮助吗?

解决方案

您可以通过简单的C#程序非常接近Robocopy的速度,该程序进行异步读取和使用标准编写 FileStream 带有64K缓冲区。较大的缓冲尺寸最大256K将使性能略有提高。超过256K将在一个令人惊讶的程度下放慢速度。在我的测试中,使用512K缓冲区的时间几乎是用256K缓冲液复制的两倍。

这个想法很简单:

Read the first buffer from the source file
do
{
    start asynchronous write to destination file.
    Read the next buffer from the source file
    wait for asynchronous write to complete
} while not end of file

这是一件非常简单的写作。我的程序几乎与Robocopy一样快,不会引起那种 机器人造成的问题 当您从服务器复制非常大的(一百千兆字节)文件时。

更多信息 关于大文件复制问题。

请注意,如果您正在阅读并写入相同的物理磁盘,则这种异步读/写入对性能无济于事。当源和目的地在不同的驱动器上时,这是最有效的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top