我正在处理的程序需要访问可移动驱动器。通常这不是问题,因为挂载点应该保持不变(例如:在 Ubuntu 上,我手机的 SD 卡安装在 /media/sebastian/GT-S5830/
上),但在 Windows 上有驱动器号,这可能会有所不同。(同一部手机:一旦E:
,在摄像机安装在E:
时插入电源后,它变得F:
并停留。
所以我想通过不保存驱动器号而是保存分区名称来解决这个问题。
例如:设置时,给出了路径E:DCIMCamera
。现在我想执行以下操作:
- 获取在
E:
处挂载的分区的名称 - 将给定目录的路径保存为类似
<partname>:DCIMCamera
- 访问设备时,解析名为
partname
的分区的驱动器号 - 通过连接驱动器号和冒号后的路径部分来构建路径。
如何通过在 Windows 上提供挂载点来获取分区名称,反之亦然?
您可能希望探索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:UserspopofiboDesktop
Local Disk (C:)
Recovery (D:)
Removable Disk (E:)
如果需要,您可能需要使用 JNA 检查 Windows 磁盘的卷信息 - 更多详细信息请点击此处。