确定文件在哪个物理硬盘上?

Posted

技术标签:

【中文标题】确定文件在哪个物理硬盘上?【英文标题】: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 但您可以使用大小阈值(如果文件 【参考方案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】:

无论如何同时阅读。

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

充其量会更快。

【讨论】:

以上是关于确定文件在哪个物理硬盘上?的主要内容,如果未能解决你的问题,请参考以下文章

怎么确定linux系统上的硬盘哪个是主盘

系统应该装在哪个盘

我可以使用扇区级数据确定安装在硬盘中的操作系统吗?

Windows XP 上用于高级格式硬盘的物理扇区大小

如何确定正在使用哪个 USB 端口?

LVM