从本地驱动器识别映射的驱动器

时间:2012-10-16 04:17:16

标签: java java-io

我使用Java中的File.listRoots()列出了我桌面上的所有可用驱动器。我有一些Mapped驱动器。当我列出根时,它会提取本地驱动器以及映射驱动器。为了排除我在代码片段后使用的映射驱动器:

for (File drive :File.listRoots()){
   String typeDescription = FileSystemView.getFileSystemView().getSystemTypeDescription(drive);
}

根据返回的类型说明,我正在过滤驱动器。但这不是普遍的标准,也不被其他操作系统接受。仅支持Windows。还有语言限制(仅支持英语类型说明)。任何人都可以给我任何其他解决方案来全局过滤映射的驱动器。

注意:
它必须特定于JDK1.6

1 个答案:

答案 0 :(得分:1)

如果您的问题仅在Windows中,为什么不使用:

if (System.getProperty("os.name").contains("Windows"))

您可以使用IVdsDisk::GetProperties编写一个C ++程序来独立完成(人类)语言,然后将其作为Java中的native函数导入(并告诉VM只尝试运行{ {1}}方法,如果您正在运行Windows。

MSDN link to get you started

检查nativeVDS_DISK_PROP.dwMediaType还是FILE_DEVICE_NETWORK。您可以在此处查看所有支持的类型:winioctrl.h

可能在Java中可以访问值,但Java通常没有特定于平台的东西,所以我对此表示怀疑。