C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?

2024-11-19 13:06:24
推荐回答(3个)
回答(1):

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        ArrayList Item = new ArrayList();  //动态数组保存文件名
        static void Main(string[] args)
        {
            Program pg = new Program(); 
            string[] except = new string[] { ".exe"};
           
            pg. Text(@"E:\text", except);
            for (int i = 0; i < pg.Item.Count; i++)
            {
                Console.WriteLine (pg.Item[i]);
                Console.ReadKey();
            }
        }
        public ArrayList Text(string path, string[] exception)
        {    int j = 0;
             
             DirectoryInfo search = new DirectoryInfo(path);   //
             //获取目录path下所有目录和子目录下的文件
             FileSystemInfo[] fsinfos = search.GetFileSystemInfos();
             //遍历目录下文件及其子目录下文件
             foreach (FileSystemInfo fsinfo in fsinfos)
             {
                 if (fsinfo is DirectoryInfo)     //判断是否为文件夹
                 {
                     DirectoryInfo dtinfo = new DirectoryInfo(fsinfo.FullName);
                     FileInfo[] f = dtinfo.GetFiles();//获取子目录下的文件
                     foreach (FileInfo file in f)
                     {
                         for (int i = 0; i < exception.Length; i++)
                         {
                             if (file.Name.Contains(exception[i]) == false)
                             {
                                 
                                 Item.Add (file.FullName);
                                 j++;
                             }
                         }
                     }
                 }
                 else
                 {                     
                         for (int i = 0; i < exception.Length; i++)
                         {
                             if (fsinfo.Name.Contains(exception[i]) == false)
                             {
                                 
                                 Item.Add (fsinfo.FullName);
                                 j++;
                             }
                         }
                     
                 }
             }
             
             return  Item ;
        }

    }
}

回答(2):

递归遍历文件夹,在遍历的过程中判断并添加到数组。

回答(3):

获得 文件夹下的所有文件:string[] filestrs= System.IO.Directory.GetFiles(文件夹地址);

foreach(var obj in filestrs)
{
FileInfo fi=new FileInfo(obj);
if(string.Compare(fi.Extension,"后缀名",true))
{
//排除掉
}

}