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