黑马程序员技术交流社区

标题: File类怎么动态加载 [打印本页]

作者: 唐晓    时间: 2013-1-23 08:12
标题: File类怎么动态加载
本帖最后由 唐晓 于 2013-1-23 20:34 编辑

需求:比如说你插一个U盘,你可以通过指定出来一个路径得到这个U盘。
  1. File dir = new File("H:\\");
  2.                 File[] files = dir.listFiles();
  3.                 for(File f : files)
  4.                 {
  5.                         System.out.println(f.getName);
  6.                 }
复制代码
但是如果我要是插了2个U盘呢?有什么简便的提取方法能动态显示只要有U盘插入,直接打印U盘里的文件和文件夹。
作者: 焦健    时间: 2013-1-23 10:09
插入两个盘的花盘符不可能一样啊,如果你要自己制定路径可以通过args传值的方式,在内部判断路径是否存在。如果不想自己指定,通过接口监听进行获取路径,那就涉及到底层资源调用,我就就不懂了!
作者: 逍林游    时间: 2013-1-23 10:20
你说“能动态显示只要有U盘插入,直接打印U盘里的文件和文件夹”,我想你应该了解下java API中的u盘驱动类,当u盘驱动运行时,通过API动态获取····
作者: 唐晓    时间: 2013-1-23 16:13
一个读取U盘数据的的小程序
  1.                 File[] roots = File.listRoots(); //获取当前硬盘分区
  2.                 List list=new ArrayList();
  3.                 for (int i = 0; i < roots.length; i++) {
  4.                         list.add(roots[i]);   //把硬盘分区添加到一个集合里
  5.                 }
  6.                 while(true){       //循环读取,当list数组的长度小于当前硬盘分区的长度,进行读取新添加的盘符的文件
  7.                         boolean flag=true;
  8.                         while(flag){
  9.                         File[] usbroots = File.listRoots();
  10.                         if(list.size()<usbroots.length){   
  11.                                         File dir = new File(usbroots[usbroots.length-1].toString());
  12.                                         File[] files = dir.listFiles();
  13.                                         if(files.length>0){
  14.                                                 for(File f : files)
  15.                                                 {
  16.                                                         System.out.println(usbroots[usbroots.length-1]+":"+f.getName());
  17.                                                 }
  18.                                         list.add(usbroots[usbroots.length-1]);
  19.                                 flag=false;
  20.                                         }
  21.                                 }
  22.                         }
  23.                 }
复制代码

作者: 谢毅    时间: 2013-1-23 18:56
这个你得去下javax.usb这个候选扩展包,Java 平台一直都以其平台无关性自豪。虽然这种无关性有许多好处,但是它也使得编写与硬件交互的 Java 应用程序的过程变得相当复杂。Java 编程语言在设计上对硬件访问提供的支持很少,javax.usb这个包是IBM在2001开始的一个项目,不过现在好像被Java正式命名了。你可以把API也下下来,自己研究研究,顺带说一句,这已经不是基础的范畴了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2