从驱动器盘符,反之亦然获取分区名(Get partition name from drive let

2019-10-19 05:12发布

我的工作需要的程序访问可移动驱动器。 通常这不会是一个问题,因为挂载点应保持不变(如:在Ubuntu上我的手机的SD卡被安装在/media/sebastian/GT-S5830/ ),但在Windows上也有该驱动器号,它可以改变。 (同样的电话:一旦E:\ ,而照相机安装在封堵后E:它成为F:止住了。)

所以,我想通过不保存盘符,但分区名来解决这个问题。

例如:当设置,路径E:\DCIM\Camera\给出。 现在,我要做到以下几点:

  • 获取安装在分区的名称E:
  • 保存路径给出的目录类似<partname>:\DCIM\Camera\
  • 当访问设备,解决分区命名的盘符partname
  • 通过连接驱动器号和冒号后的路径部分构建路径。

我怎样才能给予Windows中的挂载点,反之亦然与Java的分区名称?

Answer 1:

你可能想探索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磁盘卷信息-更多的细节在这里 。



文章来源: Get partition name from drive letter and vice versa