Znajdź katalog dla FileStore

Próbuję znaleźć sposób na wykrycie, kiedy dysk flash został podłączony do mojego komputera. Jak dotąd rozwiązaniem, które znalazłem, było sondowanieFileSystem#getFileStores za zmiany. To rzeczywiście mówi mi, kiedy dysk flash został włożony, ale o ile wiem, nie ma sposobu na odzyskanie lokalizacji.FileStore#type iFileStore#name obie wydają się wysoce niewiarygodne, ponieważ ich wartość zwracana jest specyficzna dla implementacji, ale wydają się być jedynymi metodami, które mogą zwrócić wszelkie istotne informacje, które mogą pomóc w znalezieniu katalogu dlaFileStore.

Mając to na uwadze, następujący kod:

public class Test {
    public static void main(String[] args) throws IOException {
        for (FileStore store : FileSystems.getDefault().getFileStores()) {
            System.out.println(store);
            System.out.println("\t" + store.name());
            System.out.println("\t" + store.type());
            System.out.println();
        }
    }
}

Dałem mi to wyjście:

/ (/dev/sda5)
    /dev/sda5
    ext4

/* snip */

/media/TI103426W0D (/dev/sda2)
    /dev/sda2
    fuseblk

/media/flashdrive (/dev/sdb1)
    /dev/sdb1
    vfat

Jak się okazuje,FileStore#type zwraca format dysku iFileStore#name zwraca lokalizację pliku urządzenia dla dysku. O ile wiem, jedyną metodą, która ma lokalizację napędu, jest metodatoString metoda, ale wyodrębnienie nazwy ścieżki z niej wydaje się niebezpieczne, ponieważ nie jestem pewien, jak dobrze to konkretne rozwiązanie wytrzyma na innych systemach operacyjnych i przyszłych wersjach Java.

Czy czegoś tu brakuje, czy jest to po prostu niemożliwe z Javą?

Informacje o systemie:

$ java -version
java version "1.7.0_03"
OpenJDK Runtime Environment (IcedTea7 2.1.1pre) (7~u3-2.1.1~pre1-1ubuntu2)
OpenJDK Client VM (build 22.0-b10, mixed mode, sharing)

$ uname -a
Linux jeffrey-pc 3.2.0-24-generic-pae #37-Ubuntu SMP Wed Apr 25 10:47:59 UTC 2012 i686 athlon i386 GNU/Linux

questionAnswers(3)

yourAnswerToTheQuestion