8月24日。

来源:互联网 发布:深度linux系统安装 编辑:程序博客网 时间:2024/04/29 08:25

列出磁盘目录树

package cn.itcast;

import java.io.*;

public class ListTree
{
 public static String makeSpaces(int level)
 {
  StringBuffer sbf = new StringBuffer();
  for (int i = 0; i < level; i++)
     {
      sbf.append("  ");
     }
     return sbf.toString();
 }
 
 
    public static void viewTree(FileWrapper fw)
    {
     if(!fw.exists())
     {
      System.out.println ("
该文件不存在!");
      return;
     }
     
     System.out.println (makePrefix(fw) + fw.getName());
     if(fw.isDirectory())
     {
      File[] fs = fw.listFiles();
         for (int i = 0 ;i < fs.length;i++)//File fl : fs)
         {
          File f1 = fs[i];
          FileWrapper fw1 = null;
          if(i == fs.length - 1)
          {
           fw1 = new FileWrapper(f1,false,fw);
          }
          else
          {
           fw1 = new FileWrapper(f1,true,fw);
          }
             viewTree(fw1);//
递归调用
         }
         
     }       
    }
   
   
    public static void main(String[] args)
    {
     File file;
     if(args.length < 1)
     {
      file = new File(".");
     }
     else
     {
      file = new File(args[0]);
     }
     
     FileWrapper fw = new FileWrapper(file,true,null);
     viewTree(fw);
    }
   
   
   
    public static void makeParentPrefix(FileWrapper fw,StringBuffer prefix)
    {
     if(fw.getMyParent().getMyParent() == null)
     {
      return;
     }
     
     FileWrapper parent = fw.getMyParent();
     if(parent.isLast())
     {
      prefix.append(" 
"); 
     }
     else
     {
      prefix.append("    ");
     }
     
     makeParentPrefix(parent,prefix);
    }
   
   
    public static String makePrefix(FileWrapper fw)
    {
     
     if(fw.getMyParent() == null)
     {
      return "";
     }
     
     StringBuffer sbf = new StringBuffer();
     if(fw.isLast())
     {
      sbf.append("
─├");
     }
     else
     {
      sbf.append("
─└");
     }
     
     makeParentPrefix(fw,sbf);
     sbf.reverse();
     return sbf.toString();
    }
}

class FileWrapper extends File
{
 private boolean bLast = false;
 private FileWrapper parent = null;
 
 public FileWrapper(File f,boolean bLast,FileWrapper parent)
 {
  super(f.getPath());
  this.parent = parent;
  this.bLast = bLast;
 }
 
 
 public FileWrapper getMyParent()
 {
  return parent;
 }
 
 
 public boolean isLast()
 {
  return bLast;
 } 
}