JAVA中关于树型图以及文件过滤器的基本实例代码(转贴请署名出处^_^)

来源:互联网 发布:iphone6usb共享网络 编辑:程序博客网 时间:2024/05/29 17:13

/*
 *这个实例代码主要帮助大家了解,JAVA打印树型结构的一些基本思路以及文件过滤器的使用方法,例子非常的简短,没有再增加另外的功能,不过在今后的时间里我会把代码丰富起来,最终实现windows命令行tree命令的功能,感兴趣的朋友,欢迎积极评论,共同进步。
*/
import java.io.File;
import java.io.FileFilter;
public class PrintFile
{
 
    public MyFileFilter myFileFilter = new MyFileFilter();//实例化一个过滤器
 
 
 public  String addString(boolean b)//追加字符串返回
 {
  StringBuffer sb = new StringBuffer("  ");
  if(b)
  {
   return sb.append("").toString();
  }
  else
  {
   return sb.append("    ").toString();
  }
  
 }
 
 
 
 public  void printAllFile(boolean b,File namepath)throws Exception
 {
 
  
  if(!namepath.exists())//判断是不是一个文件
  {
   throw new Exception(namepath.getName() + "非法参数,不是文件");
   
  }
  
  
  if(namepath.isDirectory())//判断是不是一个文件夹
  { 
   System.out.println(addString(b) + namepath.getName());//打印
   File[] fileList = namepath.listFiles(myFileFilter);//通过过滤器得到文件数组
   
   for(File f : fileList)
   {
    printAllFile(true,f);//递归调用,是文件夹传递true(前面不加空格)
    
     }
   
   
  }
  System.out.println(addString(false) + namepath.getName());//不是文件夹,传递false(前面加两个空格)
 
 }
 
 
 public static void main(String[] args)
 {
  File f = null;
 
  if(args.length < 1 )
  {
   f = new File("..");//如果命令行没有传参数默认为当前目录的上一级
  }
  else
  {
   f = new File(args[0]);
  }
  try
  {
   new PrintFile().printAllFile(true,f);
  }
  catch(Exception e)
  {
   
  }
 }
}

class MyFileFilter implements FileFilter
{
 public boolean accept(File filefilter)//指定路径名匹配为*.java并且包括目录
 {
  return filefilter.getPath().toLowerCase().endsWith(".java") || filefilter.isDirectory();
 }
}

 

原创粉丝点击