我正在处理的程序需要访问可移动驱动器。通常情况下这不会有问题,因为挂载点应保持不变(例如:在Ubuntu上我的手机的SD卡安装在/media/sebastian/GT-S5830/
)但在Windows上有驱动器号,可能会有所不同。 (同一部手机:E:\
,在相机安装到E:
后插入后,它变为F:
并保持不变。)
所以我想通过不保存驱动器号来解决这个问题,而是保存分区名称。
例如:设置时,给出了路径E:\DCIM\Camera\
。现在我想做以下事情:
E:
<partname>:\DCIM\Camera\
partname
如何通过在Windows上提供mountpoint来获取分区名称,反之亦然?
答案 0 :(得分:0)
您可能想要探索FileSystemView
以获取有关文件系统的更多信息。更多各种例子here。
为了您的原因,您可能希望获得可移动磁盘的句柄并使用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磁盘的卷信息 - 更多详细信息here。