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