Как определить, находятся ли 2 логических диска на одном физическом диске в Java - PullRequest
7 голосов
/ 18 марта 2019

Представьте себе ПК с SSD и HDD.

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

1 Ответ

3 голосов
/ 19 марта 2019

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
...