查找特定文件路径下指定文件类型的文件

 代码
代码1
 using System;
using System;2
 using System.IO;
using System.IO;3
 using System.Runtime.Remoting.Messaging;
using System.Runtime.Remoting.Messaging;4
 using System.Collections.Specialized;
using System.Collections.Specialized;5

6
 public class FindFiles
public class FindFiles7


 {
{8
 delegate string[] GetFilesHandler(
    delegate string[] GetFilesHandler(9
 string searchPattern, bool recurseSubdirectories);
         string searchPattern, bool recurseSubdirectories);10

11
 public static void Main(string[] args)
    public static void Main(string[] args)12

 
     {
{13
 bool recurseSubdirectories = true;
        bool recurseSubdirectories = true;14
 IAsyncResult[] result = new IAsyncResult[args.Length];
        IAsyncResult[] result = new IAsyncResult[args.Length];15
 int count = 0;
        int count = 0;16

17
 foreach (string arg in args)
        foreach (string arg in args)18

 
         {
{19
 if (arg.Trim().ToUpper() == "/S")
            if (arg.Trim().ToUpper() == "/S")20

 
             {
{21
 recurseSubdirectories = true;
                recurseSubdirectories = true;22
 break;
                break;23
 }
            }24
 }
        }25

26
 GetFilesHandler asyncGetFilesHandler = GetFiles;
        GetFilesHandler asyncGetFilesHandler = GetFiles;27

28
 Console.WriteLine("Searching: {0}",
        Console.WriteLine("Searching: {0}",29
 string.Join(", ", args));
            string.Join(", ", args));30
 if (recurseSubdirectories)
        if (recurseSubdirectories)31

 
         {
{32
 Console.WriteLine("\trecursive
            Console.WriteLine("\trecursive ");
");33
 }
        }34
 Console.WriteLine("Push ENTER to cancel/exit
        Console.WriteLine("Push ENTER to cancel/exit ");
");35

36
 foreach (string arg in args)
        foreach (string arg in args)37

 
         {
{38
 if (arg.Trim().ToUpper() != "/S")
            if (arg.Trim().ToUpper() != "/S")39

 
             {
{40
 result[count] = asyncGetFilesHandler.BeginInvoke(
                result[count] = asyncGetFilesHandler.BeginInvoke(41
 arg, recurseSubdirectories,
                    arg, recurseSubdirectories,42
 SearchCompleted, arg);
                    SearchCompleted, arg);43
 }
            }44
 count++;
            count++;45
 }
        }46
 Console.ReadLine();
        Console.ReadLine();47
 }
    }48

49
 public static string[] GetFiles(
    public static string[] GetFiles(50
 string searchPattern, bool recurseSubdirectories)
       string searchPattern, bool recurseSubdirectories)51

 
     {
{52
 string[] results = null;
        string[] results = null;53

54
 // Search for files matching the pattern.
        // Search for files matching the pattern.55
 StringCollection files = new StringCollection();
        StringCollection files = new StringCollection();56
 string directory;
        string directory;57
 directory = Path.GetDirectoryName(searchPattern);
        directory = Path.GetDirectoryName(searchPattern);58
 if ((directory == null) || (directory.Trim().Length == 0))
        if ((directory == null) || (directory.Trim().Length == 0))59

 
         {
{60

61
 directory = Directory.GetCurrentDirectory();
            directory = Directory.GetCurrentDirectory();62
 }
        }63

64
 files.AddRange(GetFiles(searchPattern));
        files.AddRange(GetFiles(searchPattern));65

66
 if (recurseSubdirectories)
        if (recurseSubdirectories)67

 
         {
{68
 foreach (string subDirectory in
            foreach (string subDirectory in69
 Directory.GetDirectories(directory))
                 Directory.GetDirectories(directory))70

 
             {
{71
 files.AddRange(GetFiles(
                files.AddRange(GetFiles(72
 Path.Combine(
                    Path.Combine(73
 subDirectory,
                        subDirectory,74
 Path.GetFileName(searchPattern)),
                        Path.GetFileName(searchPattern)),75
 true));
                    true));76
 }
            }77
 }
        }78

79
 results = new string[files.Count];
        results = new string[files.Count];80
 files.CopyTo(results, 0);
        files.CopyTo(results, 0);81

82
 return results;
        return results;83
 }
    }84

85
 public static string[] GetFiles(string searchPattern)
    public static string[] GetFiles(string searchPattern)86

 
     {
{87
 string[] fileNames;
        string[] fileNames;88
 string directory;
        string directory;89

90
 // Set directory , default to the current if the
        // Set directory , default to the current if the91
 // is none specified in the searchPattern.
        // is none specified in the searchPattern.92
 directory = Path.GetDirectoryName(searchPattern);
        directory = Path.GetDirectoryName(searchPattern);93
 if ((directory == null) || (directory.Trim().Length == 0))
        if ((directory == null) || (directory.Trim().Length == 0))94

 
         {
{95
 directory = Directory.GetCurrentDirectory();
            directory = Directory.GetCurrentDirectory();96
 }
        }97

98
 fileNames = Directory.GetFiles(
        fileNames = Directory.GetFiles(99
 Path.GetFullPath(directory),
                Path.GetFullPath(directory),100
 Path.GetFileName(searchPattern));
                Path.GetFileName(searchPattern));101

102
 return fileNames;
        return fileNames;103
 }
    }104

105
 public static void SearchCompleted(IAsyncResult result)
    public static void SearchCompleted(IAsyncResult result)106

 
     {
{107
 string searchPattern = (string)result.AsyncState;
        string searchPattern = (string)result.AsyncState;108
 Console.WriteLine("{0}:", searchPattern);
        Console.WriteLine("{0}:", searchPattern);109
 AsyncResult asyncResult = (AsyncResult)result;
        AsyncResult asyncResult = (AsyncResult)result;110
 GetFilesHandler handler =
        GetFilesHandler handler =111
 (GetFilesHandler)asyncResult.AsyncDelegate;
                (GetFilesHandler)asyncResult.AsyncDelegate;112
 string[] files = handler.EndInvoke(result);
        string[] files = handler.EndInvoke(result);113
 foreach (string file in files)
        foreach (string file in files)114

 
         {
{115
 Console.WriteLine("\t" + Path.GetFileName(file));
            Console.WriteLine("\t" + Path.GetFileName(file));116
 }
        }117
 }
    }118
 }
}.jpg) 
  
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号