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

时间:2019-03-18 20:23:32

标签: java hard-drive

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

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

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

我需要创建一个方法:

boolean isOnSamePhysicalDrive(String drive1, String drive2);

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

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

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

1 个答案:

答案 0 :(得分: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());
}

就这样

Name: SSD
Type: NTFS
Name: Door systeem gereserveerd
Type: NTFS
Name: 
Type: NTFS

请注意,Door systeem gereserveerd是我的主驱动器SSD的分区。请问荷兰语。

enter image description here

Lokale schijf的意思是Local drive 。磁盘未命名,这就是为什么结果中没有名称的原因。

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

System.out.println(Files.getFileStore(Paths.get("C:/")).name());
System.out.println(Files.getFileStore(Paths.get("E:/")).name());

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

SSD
Door systeem gereserveerd