我的工作需要的程序访问可移动驱动器。 通常这不会是一个问题,因为挂载点应保持不变(如:在Ubuntu上我的手机的SD卡被安装在/media/sebastian/GT-S5830/
),但在Windows上也有该驱动器号,它可以改变。 (同样的电话:一旦E:\
,而照相机安装在封堵后E:
它成为F:
止住了。)
所以,我想通过不保存盘符,但分区名来解决这个问题。
例如:当设置,路径E:\DCIM\Camera\
给出。 现在,我要做到以下几点:
- 获取安装在分区的名称
E:
- 保存路径给出的目录类似
<partname>:\DCIM\Camera\
- 当访问设备,解决分区命名的盘符
partname
- 通过连接驱动器号和冒号后的路径部分构建路径。
我怎样才能给予Windows中的挂载点,反之亦然与Java的分区名称?
你可能想探索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磁盘卷信息-更多的细节在这里 。