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

vig*_*mar 5 java java-io

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

for (File drive :File.listRoots()){
   String typeDescription = FileSystemView.getFileSystemView().getSystemTypeDescription(drive);
}
Run Code Online (Sandbox Code Playgroud)

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

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

dur*_*597 1

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

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

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

MSDN 链接帮助您入门

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

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