如何获取列表所有驱动器,但也获得相应的驱动器类型(可移动,本地磁盘,或CD-ROM,DVD-ROM等)?
我正试图找到一种方法来检测闪存驱动器何时插入我的计算机.到目前为止,我发现的解决方案是轮询FileSystem#getFileStores更改.这确实告诉我什么时候插入了闪存驱动器,但据我所知,没有办法检索它的位置.FileStore#type并且FileStore#name它们看起来都非常不可靠,因为它们的返回值是特定于实现的,但它们似乎是唯一可能返回任何可能有助于查找目录的相关信息的方法FileStore.
考虑到这一点,以下代码:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
给我这个输出:
/ (/dev/sda5)
/dev/sda5
ext4
/* snip */
/media/TI103426W0D (/dev/sda2)
/dev/sda2
fuseblk
/media/flashdrive (/dev/sdb1)
/dev/sdb1
vfat
Run Code Online (Sandbox Code Playgroud)
事实证明,FileStore#type返回驱动器的格式并FileStore#name返回驱动器的设备文件的位置.据我所知,唯一具有驱动器位置的toString方法是方法,但从中提取路径名称似乎很危险,因为我不确定该特定解决方案在其他操作系统上的表现如何Java的未来版本.
有没有我在这里缺少的东西,或者纯粹用Java是不可能的?
系统信息:
$ 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 …Run Code Online (Sandbox Code Playgroud)