After getting a list of the drive roots,Java中是否存在一种跨平台方式来检查是否有任何驱动器:
我希望用户能够选择DVD进行播放,并且将选项缩小到DVD驱动器而不是包括其他驱动器(例如笔式驱动器,硬盘驱动器等)在这种情况下会有所帮助。如果我可以得到这样的驱动器列表,显示哪些包含磁盘将再次有用(同样的原因。)
搜索后我虽然没有找到任何方法来做这个不涉及平台特定的hackery。那里有什么东西吗?
答案 0 :(得分:6)
Java 7中的新file system API可以执行此操作:
FileSystem fs = FileSystems.getDefault();
for (Path rootPath : fs.getRootDirectories())
{
try
{
FileStore store = Files.getFileStore(rootPath);
System.out.println(rootPath + ": " + store.type());
}
catch (IOException e)
{
System.out.println(rootPath + ": " + "<error getting store details>");
}
}
在我的系统上,它提供了以下内容(驱动器D中的CD,其余硬盘或网络共享):
C:\: NTFS
D:\: CDFS
H:\: NTFS
M:\: NTFS
S:\: NTFS
T:\: NTFS
V:\: <error getting store details>
W:\: NTFS
Z:\: NTFS
因此,对文件存储的 type()的查询应该这样做。
如果CD不在驱动器中,则getFileStore()调用将抛出
java.nio.file.FileSystemException:D ::设备尚未就绪。