加速USB驱动器上的文件复制

sce*_*sce 0 c# windows file-io

我有一个具有以下文件夹结构的USB驱动器

<root of USB>
--  folder1
    -- folder1a
         -- file1ai
         -- file1aii
         -- file1aiii
    -- folder1b
         -- ...
    -- ...
--  folder2
    -- folder2a
    -- folder2b
    -- ...
--  folder3
    -- folder3a
    -- folder3b
    -- ...
Run Code Online (Sandbox Code Playgroud)

以编程方式我需要重新排列USB驱动器上的文件夹,如下所示

<root of USB>
-- new folder
    -- folder1a
    -- folder1b
    -- ...
    -- folder2
       -- folder2a
       -- folder2b
       -- ...
    -- folder3
       -- folder3a
       -- folder3b
       -- ...
Run Code Online (Sandbox Code Playgroud)

这里的代码示例工作得很好https://msdn.microsoft.com/en-us/library/bb762914%28v=vs.110%29.aspx但是当涉及大量文件夹时它超级慢,例如当folder1时有1000个子文件夹(folder1a,folder1b等),folder1的总大小约为4MB(磁盘上大约12MB) - 这些大小是不变的.所有文件夹的复制操作总共需要25分钟.有没有办法加快这个操作?我希望有一些超级聪明的方法来重命名文件夹/操纵分配表/无论如何使这种情况发生.

笔记:

  • 输入和最终重新排列的输出需要在USB驱动器上 - 这是一个sneakernet设置.
  • USB驱动器为FAT32或NTFS,大小为4GB.我们尝试过USB 3.0而速度没有提高.

Eri*_*ips 6

所有文件夹的复制操作总共需要25分钟.

你为什么要复制文件?如果将同一设备上的文件移动到另一个文件夹,则唯一需要更改的是分配表(FAT/NTFS).我建议使用File.MoveDirectory.Move.