有近400G的数据,首先需要写程序把目标文件标准化名称(相当耗时,各种情形,间接说明在数据采集过程中标准化操作的重要性,这样会给后续处理带来很多不必要的麻烦和消耗)
网上找了个方法还不错,还有一种递归的写法。
目前不再追求什么事无巨细,凡是能快速实现即可。正所谓好钢用在刀刃上。
方法一:
public List<string> FindFile2(string sSourcePath)
        {
List<String> list = new List<string>();
//遍历文件夹
DirectoryInfo theFolder = new DirectoryInfo(sSourcePath);
FileInfo[] thefileInfo = theFolder.GetFiles("*.BMP", SearchOption.TopDirectoryOnly);
foreach (FileInfo NextFile in thefileInfo) //遍历文件
list.Add(NextFile.FullName);
            //遍历子文件夹
DirectoryInfo[] dirInfo = theFolder.GetDirectories();
            foreach (DirectoryInfo NextFolder in dirInfo)
            {
//list.Add(NextFolder.ToString());
FileInfo[] fileInfo = NextFolder.GetFiles("*.BMP", SearchOption.AllDirectories);
foreach (FileInfo NextFile in fileInfo) //遍历文件
                    list.Add(NextFile.FullName);
            }
            return list;
}
方法二:利用递归方法
 List<String> list = new List<string>();
        public List<string> FindFile(string sSourcePath )
        {
            //在指定目录及子目录下查找文件,在list中列出子目录及文件
            DirectoryInfo Dir = new DirectoryInfo(sSourcePath);
            DirectoryInfo[] DirSub = Dir.GetDirectories();
            if (DirSub.Length <= 0)
            {
                foreach (FileInfo f in Dir.GetFiles("*.*", SearchOption.TopDirectoryOnly)) //查找文件
                {
                    list.Add(Dir + @"\" + f.ToString());
                }
            }
            int t = 1;
            foreach (DirectoryInfo d in DirSub)//查找子目录 
            {
                FindFile(Dir + @"\" + d.ToString());
                list.Add(Dir + @"\" + d.ToString());
                if (t == 1)
                {
                    foreach (FileInfo f in Dir.GetFiles("*.*", SearchOption.TopDirectoryOnly)) //查找文件
                    {
                        list.Add(Dir + @"\" + f.ToString());
                    }
                    t = t + 1;
                }
            }           
return list;
}
原文:https://www.cnblogs.com/marszhw/p/9737598.html