我有一个简单的功能,可以删除目标目录中的每个文件和文件夹。我想将某些目录列入黑名单,以便此删除功能不会在这些目录中的任何文件或文件夹上执行删除操作。另外,它不应删除此目录中的子目录。
我用一个列表表示被列入黑名单的目录:
private string[] blacklistedFolders =
{
"C:/Program Files",
"C:/Program Files (x86)",
"C:/ProgramData",
"C:/Users",
"C:/Windows"
};
删除目录中项目的代码:
bool IsBacklisted(string targetDir)
{
for (int i = 0; i < blacklistedFolders.Length; i++)
{
string bList = blacklistedFolders[i];
//Check if the targetDir contains the target directory
if (bList.Contains(targetDir))
return true;
}
return false;
}
public void EmptyDirectory(string targetDir)
{
//Exit if path is blacklisted
if (IsBacklisted(targetDir))
return;
DirectoryInfo dInfo = new DirectoryInfo(targetDir);
foreach (FileInfo fileInfo in dInfo.GetFiles())
{
fileInfo.Delete();
}
foreach (DirectoryInfo dirInfo in dInfo.GetDirectories())
{
dirInfo.Delete(true);
}
}
问题是我担心代码的这一列入黑名单的部分可能会失败,从而导致删除列入黑名单的目录中的文件和文件夹。也许由于在路径的结尾或中间出现"/"
或"\"
或其他我可能错过的场景,在不同平台上,黑名单检查可能不匹配。
除了当前用于检查列入黑名单的目录的System.IO
函数以外,是否有内置的String.Contains
函数或执行此检查的更好方法?