• 一个小巧的列出文件夹下的文件类 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);
      }
     }
    }

  • 相关阅读:
    C#判断一个字符串是否是数字或者含有某个数字
    SQL多字段排序
    对于过长字符串的大小比对
    WebFrom页面绑定数据过于冗长的处理方法
    webform的导出
    SQL数据库Truncate的相关用法
    SQL的CharIndex用法
    近期总结
    每周一水(4-1)
    Codeforces Round #238 (Div. 2) 解题报告
  • 原文地址:https://www.cnblogs.com/bigmouthz/p/322580.html
Copyright © 2020-2023  润新知