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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张旭 中级黑马   /  2013-1-30 16:28  /  1233 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. */

  2. import java.io.*;

  3. class FileDemo3
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 File dir = new File("d:\\testdir");
  8.                 //showDir(dir,0);

  9.                
  10.                 //System.out.println("n="+n);

  11.                 System.out.println(dir.delete());
  12.         }
  13.         public static String getLevel(int level)
  14.         {
  15.                 StringBuilder sb = new StringBuilder();

  16. //这里还能理解 就是往容器里面加入  |--
  17.                 sb.append("|--");
  18.                 for(int x=0; x<level; x++)
  19.                 {
  20.                         //sb.append("|--");

  21. */但是这里有个不太明白 加入这个方法是从0这个索引 加入|  但是为什么运行的效果确实 只有里目录最近也就是  容器的最后
  22. 面才是 |--  这个效果  
  23.                         sb.insert(0,"|  ");

  24.                 }
  25.                 return sb.toString();
  26.         }
  27.         public static void showDir(File dir,int level)
  28.         {
  29.                
  30.                 System.out.println(getLevel(level)+dir.getName());

  31.                 level++;
  32.                 File[] files = dir.listFiles();
  33.                 for(int x=0; x<files.length; x++)
  34.                 {
  35.                         if(files[x].isDirectory())
  36.                                 showDir(files[x],level);
  37.                         else
  38.                                 System.out.println(getLevel(level)+files[x]);
  39.                 }
  40.         }


复制代码

3 个回复

倒序浏览
StringBulider字符串缓冲区,其append方法在数据末尾添加,而StringBulider insert( index,str)将数据插入指定index位置
两个方法返回的都是本类对象还能调用本类对象方法;
这里分析一下楼主代码:
sb.append("|--");//往容器里面添加一个字符"|--"
然后是往StringBulider容器里通过 sb.insert(0,"|  ");方法,循环添加"|  ";
注意StringBulider是长度可变的容器,insert方法是在指定位置添加内容,
这时候调用一次nsert(0,"|  ")方法, 就是在位置0处添加"| ",容器里元素就是"| |--",之后就是循环添加"! "
你可以把StringBulider看成一个长度可变的数组,第一次在角标0处添加了|--,第二次数组长度增加1,角标1处变成原角标0处的内容|--,在角标0处添加了"| "
每循环一次,都在头角标处添加"| ",原来的值都往后移一位;
回复 使用道具 举报
append方法是将|--插入stringbuilder中,只插了一次,注意是追加
而insert方法随着level的增加不断的在stringbuilder的头部插入|    所以效果就是那样了(想想链表的头插法就明白了)

回复 使用道具 举报
注意StringBulider是长度可变的容器  嗯  其实单独这个也理解 但是有的时候遇到实际问题还是反应不过来 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马