c# - 防止某些目录中的文件和文件夹被删除
问题描述
我有一个简单的功能,可以删除目标目录中的每个文件和文件夹。我想将某些目录列入黑名单,以便此删除功能不会对这些目录中的任何文件或文件夹执行删除。此外,它不应该删除该目录中的子目录。
我用一个列表来表示列入黑名单的目录:
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
解决方案
推荐阅读
- php - 创建动态 404 页面
- angular - 安装时不显示离子cordova-plugin-android-permissions
- mysql - 使用 SQL (MySQL) 选择一周中的每隔一天
- vbscript - 在网页上查找值并返回消息提示的 VBScript
- unity3d - 使用触发事件创建 2D 精灵?
- python - 尝试设置全局对象,但在尝试从另一个文件访问子类时未定义获取 NameError 对象
- python - Travis pylint 构建失败并出现关于单次调度的错误
- android - 为什么 Android Studio 不会在 Android Pie (9.0) 上运行应用程序?
- python - python-docx 中的项目符号列表
- python - SonarQube 不扫描 Maven 项目中的其他文件夹