【问题标题】:Determine what physical hard drive a file is on?确定文件在哪个物理硬盘上?
【发布时间】:2011-07-09 14:56:17
【问题描述】:

如何找到文件/目录所在的物理驱动器。我想比较 2 个文件,如果它们位于两个单独的驱动器上,那么我可以通过同时读取两个文件来加快比较速度。

问候

【问题讨论】:

  • 无论如何我都会同时阅读,尤其是如果它的 C#
  • @n00b 在硬盘上的多个位置同时读取会显着减慢读取速度,因为普通硬盘的寻道时间较长。
  • @CodeInChaos:取决于磁盘。例如,如果它在 RAID 阵列上...
  • 但是由于符号链接和连接,您不能真正按驱动器号执行此操作。 SSD 也具有不同的性能特征,其中并行读取很可能并不比顺序读取慢。
  • @CodeInChaos Mitch 所说的很好,因为它实际上并没有那么大的性能损失,而且驱动器越来越快,而 c#(.NET) 越来越慢,我不认为这是一个问题; P 但您可以使用大小阈值(如果文件

标签: c# file disk


【解决方案1】:

这可能需要 P/Invoke。

Way to know if two partitions are in one physical hard disk without WMI?

从上面的链接:

您需要的 Win32 函数称为 DeviceIoControl()。 API 文档可以在http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx 找到。使用控制代码 IOCTL_STORAGE_GET_DEVICE_NUMBER 调用 DeviceIoControl(),您将获得给定分区设备句柄的物理磁盘驱动器。可以使用 CreateFile() API 检索分区的设备句柄。

【讨论】:

    【解决方案2】:

    无论如何同时阅读。

    在最坏的情况下,它可能会稍微慢一些(取决于实际的物理磁盘)。

    充其量会更快。

    【讨论】:

      猜你喜欢
      • 2012-02-06
      • 2011-10-31
      • 1970-01-01
      • 2017-08-17
      • 2010-11-23
      • 2019-01-10
      • 2012-03-18
      • 2013-08-20
      相关资源
      最近更新 更多