有近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;
}