如何确定两个逻辑驱动器是否在Java中的同一物理磁盘上

Sap*_*yra 7 java hard-drive

想象一下带有SSD和HDD的PC。

SSD分为2个分区:C和D。

HDD分为2个分区:E和F。

我需要创建一个方法:

boolean isOnSamePhysicalDrive(String drive1, String drive2);
Run Code Online (Sandbox Code Playgroud)

isOnSamePhysicalDrive(“ C”,“ D”)-> true

isOnSamePhysicalDrive(“ E”,“ F”)-> true

isOnSamePhysicalDrive( “C”, “E”) - >

Kar*_*ars 3

Java.nio.file.FileStore就是您正在寻找的。

https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileStore.html

文件的存储。FileStore 表示存储池、设备、 分区、卷、具体文件系统或其他特定于文件存储实现的方式。

此代码在执行时打印我的分区的名称。

for (FileStore fs: FileSystems.getDefault().getFileStores()) {
    System.out.println("Name: " + fs.name());
    System.out.println("Type: " + fs.type());
}
Run Code Online (Sandbox Code Playgroud)

像这样

Name: SSD
Type: NTFS
Name: Door systeem gereserveerd
Type: NTFS
Name: 
Type: NTFS
Run Code Online (Sandbox Code Playgroud)

请注意,这Door systeem gereserveerd是我的主驱动器 SSD 的一个分区。请原谅荷兰语。

在此输入图像描述

Lokale schijf方法Local drive 。该磁盘未命名,这就是结果中没有显示名称的原因。

更具体地说,您可以使用这个。

System.out.println(Files.getFileStore(Paths.get("C:/")).name());
System.out.println(Files.getFileStore(Paths.get("E:/")).name());
Run Code Online (Sandbox Code Playgroud)

将打印特定驱动器或分区的名称。就我而言:

SSD
Door systeem gereserveerd
Run Code Online (Sandbox Code Playgroud)