c# - 忽略或跳过提供“未经授权访问”“具有功能 Directory.GetDirectories()”的文件夹
问题描述
我希望我的代码跳过或关闭由于任何原因而出现错误的文件夹。目前,此代码可以正确扫描文件夹,但如果任何文件夹出现错误则停止。主要是隐藏文件夹。
我发现了这些几乎相同的问题,但这些答案只指向不同的方向,没有实现我需要的解决方案,而且我似乎无法在我的代码中实现任何解决方案。我已经敲了3天的头。
忽略“未经授权的访问”“函数 Directory.GetDirectories()”
使用 Directory.GetDirectories 时如何排除文件夹
当 Directory.GetFiles() 被拒绝访问时忽略文件夹/文件
我的代码是:
//encrypts target directory
public void encryptDirectory(string location, string password)
{
//extensions to be encrypt
var validExtensions = new[]
{
".txt", ".doc"
};
string[] files = Directory.GetFiles(location);
string[] childDirectories = Directory.GetDirectories(location);
for (int i = 0; i < files.Length; i++){
string extension = Path.GetExtension(files[i]);
if (validExtensions.Contains(extension))
{
EncryptFile(files[i],password);
}
}
for (int i = 0; i < childDirectories.Length; i++){
encryptDirectory(childDirectories[i],password);
}
}
我认为可能最接近的答案是: 忽略“未经授权的访问”“函数 Directory.GetDirectories()”
将此代码应用于文件:
private static string[] GetFilesSafe(string location) {
try {
return Directory.GetFiles(location);
} catch (UnauthorizedAccessException ex) {
Console.Error.WriteLine(ex.Message);
return new string[0];
}
}
有人可以帮我理解我需要什么才能在我的代码中实施这种类型的解决方案或其他应用到文件夹的解决方案吗?我知道这不是最有效的学习方式,但对时间很敏感。感谢您/任何帮助。
解决方案
由于您想忽略或跳过引发“未经授权的访问”的文件
try {
return Directory.GetFiles(location);
//But you should alse check if the file is unavailable because it is:
//being processed by another thread
//or does not exist
// Not just for UnauthorizedAccessException !!
} catch (UnauthorizedAccessException ex) {
return true;
}
你不想犯错误吗?你只想继续。您是否也尝试过“以管理员身份”运行您的应用程序,这样您就可以绕过 UnauthorizedAccessException(如果文件位于同一机器上)
推荐阅读
- android - 用于 Windows 设置的颤振
- reactjs - 如何清除此对象可能为空错误?
- javascript - jQuery 和引导程序冲突
- java - Hibernate:findAll 方法中的多对一获取问题
- c# - C# JSON 将字符串反序列化为时间
- django-tables2 - django-tables2 multitablemixin 和引导选项卡
- javascript - 如何在 JavaScript 中自定义用户输入?
- c# - 学习 ASP .NET Core MVC 我创建了一个简单的 WEB 服务并按 ID 请求名称,但是在按名称重新使用名称时出错
- babeljs - 与预编译相比,在浏览器中独立运行 Babel 真的慢了多少?
- arrays - 带数组的条件输入