黑马程序员技术交流社区

标题: 关于File listRoots的一点小疑问 [打印本页]

作者: 三十而立    时间: 2014-1-24 13:49
标题: 关于File listRoots的一点小疑问
  1. /**
  2.          * File listRoots 列出可用的文件系统根(列出系统中可用的盘符)
  3.          */
  4.         public static void listRootsMethod(){               
  5.                 File[] files = File.listRoots();
  6.                 for(File f : files)
  7.                 {
  8.                         System.out.println(f.getName()+"::"+f.length());
  9.                 }
  10.         }
复制代码


输出结果:
::12288
::8192
::0
::8192
::0
::4096
问题:这个不是应该可以看到盘符的么?
作者: 放课后小朋友    时间: 2014-1-24 15:29
方法用错了,该使用getAbsolutePath()方法
  1. import java.io.File;


  2. public class JiShuFen11 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 File[] files=File.listRoots();
  9.                 for(File f:files){
  10.                         System.out.println(f.getAbsolutePath()+":"+f.length());
  11.                 }
  12.         }
  13. }
复制代码


这样就可以列出来盘符编号
作者: 三十而立    时间: 2014-1-24 23:07
放课后小朋友 发表于 2014-1-24 15:29
方法用错了,该使用getAbsolutePath()方法

恩,知道了。谢谢了,太大意了。

作者: 路国强    时间: 2014-1-25 01:48
  1.         public static void listRootsDemo(){
  2.                 File[] files = File.listRoots();
  3.                 for(File f:files){
  4.                         System.out.println(f);
  5.                 }
  6.         }
复制代码

兄弟。输出盘符是直接输出File的对象,不是f.getName();
作者: 翼展哈哈    时间: 2014-1-25 11:54
楼主您好
上面的各位同学已经解释了,正确输出盘符的方法,我来解释一下为什么File对象f调用了getName方法却什么也没有输出。
        查看jdk文档中File的getName方法,有如下介绍:
                (getName方法)返回由此抽象路径名表示的文件或目录的名称。该名称是路径名名称序列中的最后一个名称。如果路径名名称序列为空,则返回空字符串。
        分析可知,盘符路径名称序列的最后一个就是空,所以f在调用getName方法什么也没有输出。

希望可以帮到楼主,说的有什么不对的,欢迎指正!





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