首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Java技术发现USB海量存储设备

利用Java技术发现USB海量存储设备
EN

Stack Overflow用户
提问于 2010-09-30 07:56:47
回答 3查看 7.3K关注 0票数 8

背后的故事.

我真的很喜欢电视节目,但我一个月只回家两次。剩下的时间,我住在一间没有互联网的房子里(虽然离我的大学很近,所以免费的wifi很棒!--当它起作用的时候!)所以我需要一个小软件,当我回家的时候,能够用我的新节目更新我的便携式硬盘。在那里,文件服务器和播客同步工作。我是用Java做的,而且很好用。

问题

现在我有一个.properties文件,在这里我存储了usb的挂载目录。还不够。我希望软件能够发现所有的USB海量存储设备,让用户选择哪一个使用存储文件。我怎么能这么做?

详细信息

( a)它必须使用Java (我的意思是,它也可以执行本地主机命令,比如dir之类的)

( b)我的服务器在windows上,但我希望它是一个独立于操作系统的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-30 15:48:13

虽然我没有在您的问题中看到它,但我想您非常熟悉File.listRoots()方法,它返回一个好的文件根数组。

然后,您可以迭代它们,并尝试确定它们是否是闪存。有些黑客可能会:

代码语言:javascript
复制
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程序调用它们。

票数 3
EN

Stack Overflow用户

发布于 2010-10-01 09:16:11

您可以检查javax.usb项目。目前有两个经过认证的实现,用于Linux和BSD,以及一个windows的实现 (看起来,它仍然不完整,但我认为它允许您列出合并的USB设备)。

但我不确定只列出USB驱动器(而不是@Amrinder Arora应答中的所有驱动器)是否值得采用新的库集,并与半完整的实现进行斗争.

票数 2
EN

Stack Overflow用户

发布于 2014-02-28 10:41:40

在nio中提供了一种美丽的方式。看看这个:

代码语言:javascript
复制
import java.nio.file.*;
for(Path p:FileSystems.getDefault().getRootDirectories()){
    System.out.println(p);
}

你会得到所有的根作为路径对象;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3828799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档