黑马程序员技术交流社区

标题: File目录直接显示和getName()的区别? [打印本页]

作者: 曹德君    时间: 2013-5-8 14:08
标题: File目录直接显示和getName()的区别?
File目录直接显示和用方法getName()来显示有什么区别???
  1. import  java.io.*;
  2. class  ListDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 File dir = new File("d:\\share");
  7.                 //传递参数从0级目录开始
  8.                 listDir(dir,0);
  9.         }
  10.         //列出所有目录带层级的
  11.         public static String getLevel(int level)
  12.         {
  13.                 StringBuilder sb = new StringBuilder();
  14.                 for (int x=0;x<level ;x++ )
  15.                 {
  16.                         sb.append("|--");
  17.                 }
  18.                 return sb.toString();
  19.         }
  20.         //列出所有目录,将目录和每次递增的数level传递给函数。使期有层级的区别
  21.         public static void listDir(File dir,int level)
  22.         {
  23.                 //????这段代码如果直接用dir一样可以显示目录,为什么要用dir.getName()来获取名称显示呢??有什么区别吗?
  24.                 System.out.println(getLevel(level)+dir.getName());
  25.                  //每递归一次就会累加一个"|--"
  26.                 level++;
  27.                
  28.                 File[] files=dir.listFiles();       

  29.                 for (int x=0;x<files.length;x++)
  30.                 {
  31.                         if (files[x].isDirectory())
  32.                         {
  33.                                 listDir(files[x],level);
  34.                         }
  35.                         else
  36.                                 System.out.println(getLevel(level)+files[x]);
  37.                 }
  38.         }
  39. }
复制代码

作者: zms2100    时间: 2013-5-8 15:24
没听懂LZ的意思,getName()是获取得到的File文件对象的名称,而File类的listFists()方法返回的数组里存储的就是那些File文件对象(这些对象是用来操作,要打印只能用getName()或getPath()来获取File名或路径)。
不知道LZ想问的是不是getName()或getPath()的区别? 在这道题里面,毕老师是为了让打印出来的文件按照自己规定的格式(打印的文件名因为所在目录的层次不同所以前面的空格什么的就数量不同)。
作者: 杨政    时间: 2013-5-8 18:12
getName()是显示文件或目录的名称,直接用dir(就是toString()、getPath())显示的是路径名。
System.out.println(getLevel(level)+files[x]);改成System.out.println(getLevel(level)+files[x].getName());试下就可以看出区别了。用getName()更好,输出结果看起来更舒服。


作者: 黄玉昆    时间: 2013-5-10 22:06
如果问题解决了,请将分类改为“已解决”,谢谢
作者: 范德农    时间: 2013-5-11 02:30
getName只显示文件名,显示内容不包含前面的路径
File类的listFists()方法返回的数组里存储的就是那些File文件对象
我想LZ想说的应该是getName和getPath的区别吧。
一个是文件名,一个是地址路径




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