【问题标题】:Speed up file copying on a USB drive加快 USB 驱动器上的文件复制速度
【发布时间】:2015-09-11 07:24:30
【问题描述】:

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

<root of USB>
--  folder1
    -- folder1a
         -- file1ai
         -- file1aii
         -- file1aiii
    -- folder1b
         -- ...
    -- ...
--  folder2
    -- folder2a
    -- folder2b
    -- ...
--  folder3
    -- folder3a
    -- folder3b
    -- ...

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

<root of USB>
-- new folder
    -- folder1a
    -- folder1b
    -- ...
    -- folder2
       -- folder2a
       -- folder2b
       -- ...
    -- folder3
       -- folder3a
       -- folder3b
       -- ...

这里的代码示例运行良好https://msdn.microsoft.com/en-us/library/bb762914%28v=vs.110%29.aspx 但是当涉及大量文件夹时它非常慢,例如当 folder1 有 1000 个子文件夹(folder1a、folder1b 等)时,folder1 的总大小约为 4MB(磁盘上约为 12MB) - 这些大小是恒定的。合并所有文件夹的复制操作需要 25 分钟以上。有什么办法可以加快这个操作?我希望有一些超级聪明的方法来重命名文件夹/操作分配表/任何使这种情况发生的方法。

注意事项:

  • 输入和最终重新排列的输出需要在 USB 驱动器上 - 这是一个运动鞋网设置。
  • USB 驱动器为 4GB 大小的 FAT32 或 NTFS。我们尝试了 USB 3.0,但速度没有任何提高。

【问题讨论】:

  • 当您通过 WindowsExplorer 或类似工具手动执行此操作时,这应该如何更快?我怀疑这是否有效,它仅取决于 USB 的速度。要使用 USB3.0,您必须有一个可插拔的 USB 设备(例如记忆棒)和一个读卡器(您的计算机也需要 USB3.0)。将 3.0 设备插入 2.0 接口不会有任何改进。
  • 将整个复制到硬盘中,重新排序并复制回来?
  • @Thomas 不幸的是,速度增益在复制到 HDD 时丢失了。
  • USB 密钥上的数据总大小是多少?这是什么型号?

标签: c# windows file-io


【解决方案1】:

所有文件夹的复制操作加起来需要 25 分钟以上。

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

【讨论】:

  • 很好地观察了移动效率的优越性,但实际上分配表(FAT)或位图(NTFS)不需要改变,只需要改变目录。
猜你喜欢
  • 2010-10-04
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 1970-01-01
相关资源
最近更新 更多