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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王冰 中级黑马   /  2012-7-10 23:28  /  1552 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王冰 于 2012-7-13 14:52 编辑

public static void main(String[] args)
{
      File dir = new File("F:\\photo");//我试着列出F盘下的所有文件和文件夹,直接写F:不行,写成F:\\就可以了,为什么
      showDir(dir,0);
}
public static String getLevel(int level)
{
      StringBuilder sb = new StringBuilder();
      sb.append("|--");
      for (int x=0; x<level; x++ )
     {
         sb.insert(0,"  ");//这里变成空格显示出来更好,但是怎么样使最顶层目录前不显示|--
     }                           //也就是使下图中的photo前的|--不显示出来,这样更好些
     return sb.toString();
}


第20天视频.jpg (39.78 KB, 下载次数: 33)

第20天视频.jpg

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

4 个回复

倒序浏览
File dir = new File("F:\\photo");//我试着列出F盘下的所有文件和文件夹,直接写F:不行,写成F:\\就可以了,为什么
//因为\是转义字符,如果写成"F:\photo",那么\p是一个整体,\转义的是p,所以要写成"F:\\photo"

点评

我是说直接列出F盘下的文件,new File("F:")这样创建不行,要new File("F:\\")才行,就是搞不清楚直接的一个盘符还要在后面加\\做什么?   发表于 2012-7-11 01:29
回复 使用道具 举报
第一个问题,我的理解是,<f:>是代表这一个盘符,并不是一个文件夹对象,File不能对一个盘符进行操作.而f://就将f:转换成了一个文件夹对象.就像<user>可能是一个文件,可能什么都不是,但是<user/>就很清楚的指明了<user>是一个文件夹.
第二个问题,试试将sb.append("|--");放到for循环后面看看,这样在第一次递归的循环之间就不会打印<|-->,而后面的<|-->就代表了下一个文件夹所属的层级,但是为了好看,最好在<|-->前面加两个到三个的空格.因为这不是你的全部代码,还不好判断,先试试看.
回复 使用道具 举报
File dir = new File("F:\\photo");//我试着列出F盘下的所有文件和文件夹,直接写F:不行,写成F:\\就可以了,为什么
因为反斜杠是转义字符;第一个反斜杠是吧这个f转成了字符串;第二个是吧这个字符串转成了文件夹对象也就是windows所识别的字符;
回复 使用道具 举报
自己后来想到了,把for循环前面的加上一个判断就可以了,代码就变成如下的样子:
public static String getLevel(int level)
{
      StringBuilder sb = new StringBuilder();
      if(level==0)
            sb.insert(0,"  ");
      else     
            sb.append("|--");
      for (int x=0; x<level; x++ )
     {
          sb.insert(0,"  ");//这里变成空格显示出来更好,但是怎么样使最顶层目录前不显示|--
     }
      return sb.toString();
}
运行后结果如下:

QQ截图20120713145108.jpg (36.68 KB, 下载次数: 25)

QQ截图20120713145108.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马