C#文件权限排除

时间:2011-07-20 12:45:01

标签: c# foreach

我想知道是否有办法解决我对此代码的问题:

DriveInfo[] dDrives = DriveInfo.GetDrives();
foreach(DriveInfo dDrive in dDrives)
{
    try
    {
        string sDrive = dDrive.ToString();
        string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
        foreach(string sResult in sSearch)
        {
            textBox2.Text = sResult + Environment.NewLine;
        }
    }
    catch
    {
    }
}

当遇到因权限无法访问的文件时,它会转到catch并结束。我需要做的是,如果遇到无法访问的文件,请返回try块并继续搜索。非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

你所拥有的代码应该可以工作,虽然你真的应该重新考虑你的逻辑,使用流控制的异常是完全错误的。

这可行,但不是最佳做法:

string sDrive = dDrive.ToString();
try
{
   string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
}
catch {}

foreach(string sResult in sSearch)
{
    textBox2.Text = sResult + Environment.NewLine;
}

您到底在哪里访问文件?我只看到一个列表文件名(Directory.GetFiles)的调用,以及返回的文件名列表。

答案 1 :(得分:1)

修改 删除原始答案不正确。

请参阅:UnauthorizedAccessException cannot resolve Directory.GetFiles failure了解针对您的问题的一些建议解决方案。