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 ;
}
}
}
递归遍历文件夹,在遍历的过程中判断并添加到数组。
获得 文件夹下的所有文件:string[] filestrs= System.IO.Directory.GetFiles(文件夹地址);
foreach(var obj in filestrs)
{
FileInfo fi=new FileInfo(obj);
if(string.Compare(fi.Extension,"后缀名",true))
{
//排除掉
}
}