要想查询某一目录中所有文件,找到一个就输出文件名,我写了以下代码,请大家帮我改正下,谢谢!static void FindFile(string path)
        {
            try
            {
                foreach (string d in Directory.GetDirectories(path))
                {
                    foreach (string f in Directory.GetFiles(d))
                    {
                        FileInfo fi = new FileInfo(f);
                        Console.WriteLine("{0}", Directory.GetFiles(path));
                    }
                    FindFile(d); //递归查询
                }
            }
            catch 
            {
            }

解决方案 »

  1.   


    foreach (string fileName in Directory.GetFiles(folderPath,"*.*",SearchOption.AllDirectories))
                {
                    FileInfo newFile = new FileInfo(fileName);
                }
      

  2.   


     static void FindFile(string path)
            {
                DirectoryInfo di = new DirectoryInfo(path);       
                if (!di.Exists)
                {
                    Console.WriteLine("The path :" + path + "is not exist!");
                    return;
                }
                try
                {                foreach (FileInfo f in di.GetFiles())
                        Console.WriteLine(f.FullName);
                    foreach (DirectoryInfo d in di.GetDirectories())
                        FindFile(di.FullName);
                }
                catch
                {
                }
            }
      

  3.   

    //在Directory.GetFiles(d)之前判断一下,d是不是目录
    //Console.WriteLine("{0}", Directory.GetFiles(path)); 这个输出有点问题...foreach (string d in Directory.GetDirectories(path))
    {
      if(File.Exists(d))
      {
        ProcessFile(path); 
      }
      else if(Directory.Exists(d)) 
      {
        ProcessDirectory(path);
      }
      else 
      {
        Console.WriteLine("{0} is not a valid file or directory.", d);
      }  
    }
    public static void ProcessDirectory(string targetDirectory) 
    {        string [] fileEntries = Directory.GetFiles(targetDirectory);
            foreach(string fileName in fileEntries)
                ProcessFile(fileName);        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
            foreach(string subdirectory in subdirectoryEntries)
                ProcessDirectory(subdirectory);
    }public static void ProcessFile(string path) 
    {
        Console.WriteLine("file:{0}", path);     
    }
      

  4.   


    两种方式都可以,MSDN上搜索下DirectoryInfo..::.GetFileSystemInfos 方法 和                         Directory..::.GetDirectories 方法 (String) ,例子都还不错
    try
    {
        DirectoryInfo dir = new DirectoryInfo(directory);    if (!dir.Exists)
        {
             throw new DirectoryNotFoundException("The directory does not exist.");
        }    // Call the GetFileSystemInfos method.
        FileSystemInfo[] infos = dir.GetFileSystemInfos();    Console.WriteLine("Working...");    // Pass the result to the ListDirectoriesAndFiles
        // method defined below.
        ListDirectoriesAndFiles(infos);}
    catch (Exception e)
    {
           Console.WriteLine(e.Message);
    }static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo)
        {
            // Check the FSInfo parameter.
            if (FSInfo == null)
            {
                throw new ArgumentNullException("FSInfo");
            }        // Iterate through each item.
            foreach (FileSystemInfo i in FSInfo)
            {
                // Check to see if this is a DirectoryInfo object.
                if (i is DirectoryInfo)
                {                // Cast the object to a DirectoryInfo object.
                    DirectoryInfo dInfo = (DirectoryInfo)i;                // Iterate through all sub-directories.
                    ListDirectoriesAndFiles(dInfo.GetFileSystemInfos());
                }
                // Check to see if this is a FileInfo object.
                else if (i is FileInfo)
                {
                     Console.WriteLine("file:{0}", i.ToString());        
                }
            }
    }