大家好,我已經得到了以下代碼,當某些條件匹配時,它將關閉並獲取路徑目錄中的所有文件,包括子目錄。目前我有兩種方法;一個去獲取所有文件並將它們添加到列表,然後再返回列表的另一種方法。只是想知道這是做這件事的最好方法還是將兩者結合起來更有效率?或者我的代碼可以重寫成更高效?對不起,我對這一切都很陌生!通過多個文件夾返回文件列表的最有效方法
public class FileUtility
{
List<FileInfo> fileInfoList = new List<FileInfo>();
public void ProcessDir(string sourceDir, String userName)
{
try
{
string userNameFirstLetter = userName.First().ToString();
DirectoryInfo di = new DirectoryInfo(sourceDir);
foreach (FileInfo fi in di.GetFiles())
{
if (fi.Extension == ".xls" || fi.Extension == ".xlsx" || fi.Extension == ".pdf")
{
if (fi.Name.Contains(userName))
{
if (fi.Name.Contains("X"))
{
if(fi.Name.First().ToString().Equals(userNameFirstLetter))
{
if (fi.Name.Split(Convert.ToChar("X"))[0].Equals(userName))
{
fileInfoList.Add(fi);
}
}
}
}
}
}
// Recurse into subdirectories of this directory.
string[] subdirEntries = Directory.GetDirectories(sourceDir);
foreach (string subdir in subdirEntries)
{
// Do not iterate through reparse points
if ((File.GetAttributes(subdir) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
{
ProcessDir(subdir, userName);
}
}
}
catch (DirectoryNotFoundException exp)
{
throw new DirectoryNotFoundException("Directory not found " + exp.Message);
}
catch (IOException exp)
{
throw new IOException("The Process cannot access the file because it is in use by another process " + exp.Message);
}
}
public List<FileInfo> GetFileInfoList()
{
return fileInfoList;
}
}
這是更高效:)謝謝! –
@克里斯 - 不要纏着人投票... –