A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三十而立 中级黑马   /  2014-1-24 13:49  /  1442 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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
问题:这个不是应该可以看到盘符的么?

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

4 个回复

倒序浏览
方法用错了,该使用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. }
复制代码


这样就可以列出来盘符编号

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
放课后小朋友 发表于 2014-1-24 15:29
方法用错了,该使用getAbsolutePath()方法

恩,知道了。谢谢了,太大意了。
回复 使用道具 举报
  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();

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
楼主您好
上面的各位同学已经解释了,正确输出盘符的方法,我来解释一下为什么File对象f调用了getName方法却什么也没有输出。
        查看jdk文档中File的getName方法,有如下介绍:
                (getName方法)返回由此抽象路径名表示的文件或目录的名称。该名称是路径名名称序列中的最后一个名称。如果路径名名称序列为空,则返回空字符串。
        分析可知,盘符路径名称序列的最后一个就是空,所以f在调用getName方法什么也没有输出。

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

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马