-1

我想尽可能快地复制文件(最好在 C# 中)。并且想知道 - 由于磁盘映像不只是复制所有驱动器(否则它总是与驱动器的容量一样大) - 为什么它复制文件快得多?

即使在 C# 中无法达到这种速度,我也在尝试理解这个主题。

4

1 回答 1

1

从磁盘检索单个文件的工作方式如下(大大简化):

1) 操作系统向磁盘发送文件请求。

2) 磁盘找到文件。

3)磁盘将文件的副本发送回操作系统。

然而,关键点是,如果您要检索多个文件,则对每个文件连续重复整个过程。 所以如果你想从磁盘上抓取一千个文件,操作系统会发送一个请求,等待,获取文件,发送另一个请求,等待,获取文件,重复一千次。这是很多开销,尤其是对于小文件。

另一方面,磁盘映像根本不关心单个文件。它询问磁盘上的文件表在哪里有数据,然后从磁盘中逐位复制这些填充的整个部分。每个部分都是一个大要求。无需对单个文件进行串行请求。

快速的 Google 搜索将我引导到 Win32 API 函数CreateFile(具体参见“物理磁盘和卷”部分)作为在 C# 中处理此问题的最佳选择 - 但如果有特定于 .NET 的成像方式,我还没有看到它。

于 2015-07-27T18:33:43.693 回答