背后的故事.
我真的很喜欢电视节目,但我一个月只回家两次。剩下的时间,我住在一间没有互联网的房子里(虽然离我的大学很近,所以免费的wifi很棒!--当它起作用的时候!)所以我需要一个小软件,当我回家的时候,能够用我的新节目更新我的便携式硬盘。在那里,文件服务器和播客同步工作。我是用Java做的,而且很好用。
问题
现在我有一个.properties文件,在这里我存储了usb的挂载目录。还不够。我希望软件能够发现所有的USB海量存储设备,让用户选择哪一个使用存储文件。我怎么能这么做?
详细信息
( a)它必须使用Java (我的意思是,它也可以执行本地主机命令,比如dir之类的)
( b)我的服务器在windows上,但我希望它是一个独立于操作系统的解决方案。
发布于 2010-09-30 15:48:13
虽然我没有在您的问题中看到它,但我想您非常熟悉File.listRoots()方法,它返回一个好的文件根数组。
然后,您可以迭代它们,并尝试确定它们是否是闪存。有些黑客可能会:
File[] roots = File.listRoots();
if (roots == null) {
// you have a different problem here. Is it even a computer we are talking about?
}
// Iterate through roots
for (File root : roots) {
if (root.canWrite()) { // Or, you could use File.createTempfile with that folder
// if root does not contain some well know files
// Or, if root contains some well known files
// Based on these 2 hacks, or possible other characteristics, you may be reasonably sure
}
}这是我所能提供的。更多的原生程序可以做更多的工作,然后从Java程序调用它们。
发布于 2010-10-01 09:16:11
您可以检查javax.usb项目。目前有两个经过认证的实现,用于Linux和BSD,以及一个windows的实现 (看起来,它仍然不完整,但我认为它允许您列出合并的USB设备)。
但我不确定只列出USB驱动器(而不是@Amrinder Arora应答中的所有驱动器)是否值得采用新的库集,并与半完整的实现进行斗争.
发布于 2014-02-28 10:41:40
在nio中提供了一种美丽的方式。看看这个:
import java.nio.file.*;
for(Path p:FileSystems.getDefault().getRootDirectories()){
System.out.println(p);
}你会得到所有的根作为路径对象;
https://stackoverflow.com/questions/3828799
复制相似问题