在递归文件搜索中忽略未经许可的目录(System.UnauthorizedAccessException)
Ignore directory without permission (System.UnauthorizedAccessException) in recursive file search
我的程序应该在所有驱动器和文件夹中搜索具有特定文件名的文件。在我开始搜索时,它在我的代码中的这一行抛出一个 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)
{ }
我的程序应该在所有驱动器和文件夹中搜索具有特定文件名的文件。在我开始搜索时,它在我的代码中的这一行抛出一个 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)
{ }