java - 从本地驱动器识别映射驱动器

标签 java java-io

我在 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 方法。

MSDN link to get you started

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

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

关于java - 从本地驱动器识别映射驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907453/

相关文章:

java - Session.persist() 的正确用法

java - 为什么使用 java.nio.files.File::list 会导致此广度优先文件遍历程序崩溃并出现 "Too many open files"错误?

java - Java 中的文件上次访问时间和上次修改时间?

java - 所有不带参数的方法都可以访问变量吗?

java - 登录远程 Windows 服务器并执行 .bat 文件

java - 运行 Log4J HelloWorld 示例时遇到问题,出现 "package does not exist"错误

java - 将缓冲图像按行和列存储在新的缓冲图像中

java - 如何将函数应用于每个集合元素以便在 Guava 中对其进行变异?

Java:随机访问文件模式 "rws"与 "rwd"?

java - FileInputStream.read() 什么时候阻塞?