5

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

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

根据返回的类型描述,我正在过滤驱动器。但这不是通用标准,其他操作系统也不能接受。仅支持 Windows。还有语言限制(类型描述仅支持英语)。谁能给我任何其他解决方案来全局过滤映射的驱动器。

注意:
必须是JDK1.6特有的

4

1 回答 1

1

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

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

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

帮助您入门的 MSDN 链接

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

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

于 2012-10-23T15:48:07.790 回答