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

问题描述 投票:7回答:1

想象一下带有SSD和硬盘的PC。

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

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

我需要创建一个方法:

boolean isOnSamePhysicalDrive(String drive1, String drive2);

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

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

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

java hard-drive
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.