C# 在递归文件搜索中忽略未经许可的目录(System.UnauthorizedAccessException)
我的程序应该在所有驱动器和文件夹中搜索具有特定文件名的文件。在我的搜索开始时,它在我的代码的这一行抛出一个C# 在递归文件搜索中忽略未经许可的目录(System.UnauthorizedAccessException),c#,directory,C#,Directory,我的程序应该在所有驱动器和文件夹中搜索具有特定文件名的文件。在我的搜索开始时,它在我的代码的这一行抛出一个System.UnauthorizedAccessException DirectoryInfo[] dirs = dir.GetDirectories(); 这是我正在使用的代码。如何修复它,使其忽略存在此问题的目录并继续搜索 static void Main(string[] args) { DriveInfo[] allDrives = DriveInfo.GetDrives
System.UnauthorizedAccessException
DirectoryInfo[] dirs = dir.GetDirectories();
这是我正在使用的代码。如何修复它,使其忽略存在此问题的目录并继续搜索
static void Main(string[] args)
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
searchDirectory(d.ToString(), true);
}
}
public static void searchDirectory(string drive, bool doSubDirs)
{
DirectoryInfo dir = new DirectoryInfo(drive);
DirectoryInfo[] dirs = dir.GetDirectories();
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
if (file.Name.Contains("something"))
{
do something.... xD
}
}
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
//string temppath = Path.Combine(destDirName, subdir.Name);
searchDirectory(subdir.FullName, doSubdirs);
}
}
}
简单地用try-catch包装代码怎么样
DirectoryInfo dir = new DirectoryInfo(drive);
try
{
DirectoryInfo[] dirs = dir.GetDirectories();
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
if (file.Name.Contains("something"))
{
//do something.... xD
}
}
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
//string temppath = Path.Combine(destDirName, subdir.Name);
searchDirectory(subdir.FullName, doSubdirs);
}
}
}
catch (UnauthorizedAccessException)
{ }