黑马程序员技术交流社区

标题: 关于列出目录下文件的一些疑惑 [打印本页]

作者: 王冰    时间: 2012-7-10 23:28
标题: 关于列出目录下文件的一些疑惑
本帖最后由 王冰 于 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

作者: 李伟    时间: 2012-7-11 01:19
File dir = new File("F:\\photo");//我试着列出F盘下的所有文件和文件夹,直接写F:不行,写成F:\\就可以了,为什么
//因为\是转义字符,如果写成"F:\photo",那么\p是一个整体,\转义的是p,所以要写成"F:\\photo"
作者: 周恺    时间: 2012-7-11 03:25
第一个问题,我的理解是,<f:>是代表这一个盘符,并不是一个文件夹对象,File不能对一个盘符进行操作.而f://就将f:转换成了一个文件夹对象.就像<user>可能是一个文件,可能什么都不是,但是<user/>就很清楚的指明了<user>是一个文件夹.
第二个问题,试试将sb.append("|--");放到for循环后面看看,这样在第一次递归的循环之间就不会打印<|-->,而后面的<|-->就代表了下一个文件夹所属的层级,但是为了好看,最好在<|-->前面加两个到三个的空格.因为这不是你的全部代码,还不好判断,先试试看.
作者: 。_Smileヾ淡莣    时间: 2012-7-11 14:53
File dir = new File("F:\\photo");//我试着列出F盘下的所有文件和文件夹,直接写F:不行,写成F:\\就可以了,为什么
因为反斜杠是转义字符;第一个反斜杠是吧这个f转成了字符串;第二个是吧这个字符串转成了文件夹对象也就是windows所识别的字符;

作者: 王冰    时间: 2012-7-13 14:51
自己后来想到了,把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





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