2

我正在处理的程序需要访问可移动驱动器。通常这不会成为问题,因为挂载点应该保持不变(例如:在 Ubuntu 上,我手机的 SD 卡安装在/media/sebastian/GT-S5830/)但在 Windows 上,驱动器号可能会有所不同。(同一部手机:有一次E:\,在安装相机的情况下插入后E:,它变成F:并保持不变。)

所以我想通过不保存驱动器号而是分区名称来解决这个问题。

例如:设置时,E:\DCIM\Camera\给出了路径。现在我想做以下事情:

  • 获取挂载的分区名称E:
  • 将给定目录的路径保存为类似<partname>:\DCIM\Camera\
  • 访问设备时,解析命名分区的盘符partname
  • 通过连接驱动器号和冒号后的路径部分来构建路径。

如何通过在 Windows 上提供挂载点来获取分区名称,反之亦然?

4

1 回答 1

0

您可能想要探索FileSystemView以获取有关文件系统的更多信息。更多种类的例子在这里

出于您的原因,您可能希望获取可移动磁盘的句柄并对信息进行处理:

FileSystemView fsv = FileSystemView.getFileSystemView();
        File[] files = File.listRoots();

        File[] roots = fsv.getRoots();
        for (int i = 0; i < roots.length; i++) {
            System.out.println("Root: " + roots[i]);
        }

        for (File fi : files) {
            if (fsv.getSystemTypeDescription(fi).contains("Local Disk")
                    || fsv.getSystemTypeDescription(fi).contains(
                            "Removable Disk")) {
                System.out.println(fsv.getSystemDisplayName(fi));
            }

        }

输出:

Root: C:\Users\popofibo\Desktop
Local Disk (C:)
Recovery (D:)
Removable Disk (E:)

如果需要,您可能希望使用 JNA 检查 Windows 磁盘的卷信息 - 更多详细信息请点击此处

于 2014-01-11T17:40:46.693 回答