zoukankan      html  css  js  c++  java
  • 一个小巧的列出文件夹下的文件类 FileFilter

    一个小巧的列出文件夹下的文件类

    using System;

    namespace CodeBuilder.Builder
    {
     class MainClass
     {
      public static void Main(string[] args)  
      {
    //   for(int f = 0; f < 4; f++)
    //   {
       int f = 3;
       System.Console.WriteLine("_______________{Begin}_______________");
       string folder = System.Console.ReadLine();
        FileFilter filter = new FilterFactory().CreateInstance(f);
        ListFolder listfolder = new ListFolder(folder,filter);
        System.Collections.ArrayList al = listfolder.Files;
        if (al != null)
        {
         for(int i = 0; i < al.Count; i++)
         {
          System.Console.WriteLine("_____{0}_____",i);
          System.Console.WriteLine(al[i]);
         }
        }
        
        System.Console.WriteLine("_______________{End}_______________");
        System.Console.ReadLine();

    //   }
      }
     }
     
     public class FilterFactory
     {
      public FileFilter CreateInstance(int i)
      {
       switch (i)
       {
        case 0:
         return  new WFilter();
        case 1:
         return  new XFilter();
        case 2:
         return  new YFilter();
        case 3:
         return  new ZFilter();
        default:
         return  new FileFilter();
       }
      }

      public FileFilter CreateInstance(string  str)
      {
       switch (str)
       {
        case ".cs":
         return  new WFilter();
        case ".aspx":
         return  new XFilter();
        case ".aspx.cs":
         return  new YFilter();
        case ".xml":
         return  new ZFilter();
        default:
         return  new FileFilter();
       }
      }
     }
     public class ZFilter:FileFilter
     {
      public  override bool Filter(string filename)
      {
       return filename.ToLower().EndsWith(".xml");
      }
     }

     public class YFilter:FileFilter
     {
      public  override bool Filter(string filename)
      {
       return filename.ToLower().EndsWith(".aspx.cs");
      }
     }
     
     public class XFilter:FileFilter
     {
      public  override bool Filter(string filename)
      {
       return filename.ToLower().EndsWith(".aspx");
      }
     }
     
     public class WFilter:FileFilter
     {
      public  override bool Filter(string filename)
      {
       return filename.ToLower().EndsWith(".cs");
      }
     }
     public class FileFilter
     {
      public virtual bool Filter(string filename)
      {
       return true;
      }
     }
     
     public sealed class ListFolder
     {
      System.Collections.ArrayList _Files = new System.Collections.ArrayList();
      FileFilter filefilter;
      public ListFolder(string path, FileFilter filter)
      {
       this.filefilter = filter;
       Folder(path);
      }
      
      public System.Collections.ArrayList Files
      {
       get {return _Files;}
      }
      
      void Folder(string path)
      {
       if (System.IO.File.Exists(path))
       {
        docase(path);
       }
       else if (System.IO.Directory.Exists(path))
       {
        string[] files = new string[0];
        files = System.IO.Directory.GetFiles(path);
        for(int i = 0 ; i < files.Length; i++)
        {
         docase(files[i]);
        }
        
        string[] folders = System.IO.Directory.GetDirectories(path);
        for(int i = 0; i < folders.Length; i++)
        {
         Folder(folders[i]);
        }
       }
      }
      
      void docase(string path)
      {
       if (filefilter.Filter(path)) _Files.Add(path);
      }
     }
    }

  • 相关阅读:
    嵌入式linux问题杂锦
    QT creator 调试问题
    torcs代码
    ubuntu12.04安装KDevelop
    ubuntu12.04LTS安装以及卸载 QT4.8.6和QT creator2.5.2
    用vs2010编译vs2013建的工程
    mysql+matlab配置
    流形学习笔记
    可用的rtmp互联网地址
    信用卡术语
  • 原文地址:https://www.cnblogs.com/bigmouthz/p/322580.html
Copyright © 2011-2022 走看看