我使用Java中的File.listRoots()列出了我桌面上的所有可用驱动器。我有一些Mapped驱动器。当我列出根时,它会提取本地驱动器以及映射驱动器。为了排除我在代码片段后使用的映射驱动器:
for (File drive :File.listRoots()){
String typeDescription = FileSystemView.getFileSystemView().getSystemTypeDescription(drive);
}
根据返回的类型说明,我正在过滤驱动器。但这不是普遍的标准,也不被其他操作系统接受。仅支持Windows。还有语言限制(仅支持英语类型说明)。任何人都可以给我任何其他解决方案来全局过滤映射的驱动器。
注意:
它必须特定于JDK1.6
答案 0 :(得分:1)
如果您的问题仅在Windows中,为什么不使用:
if (System.getProperty("os.name").contains("Windows"))
?
您可以使用IVdsDisk::GetProperties
编写一个C ++程序来独立完成(人类)语言,然后将其作为Java中的native
函数导入(并告诉VM只尝试运行{ {1}}方法,如果您正在运行Windows。
检查native
是VDS_DISK_PROP.dwMediaType
还是FILE_DEVICE_NETWORK
。您可以在此处查看所有支持的类型:winioctrl.h
可能在Java中可以访问值,但Java通常没有特定于平台的东西,所以我对此表示怀疑。