从驱动器盘符中获取分区名称,反之亦然

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

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

例如:设置时,给出pathE:\DCIM\Camera\ 。 现在我想要做以下事情:

  • 获取安装在E:处的分区的名称E:
  • 将path保存到给定目录,如<partname>:\DCIM\Camera\
  • 访问设备时,parsing名为partname的分区的驱动器号
  • 通过连接驱动器号和冒号后面的path部分构buildpath。

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

您可能需要了解FileSystemView以获取关于文件系统的更多信息。 这里有更多的例子。

为了您的原因,您可能想要在可移动磁盘上处理一些事情,并使用info:

 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磁盘的卷信息 – 更多细节在这里 。