Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件权限排除_C#_Foreach - Fatal编程技术网

C# 文件权限排除

C# 文件权限排除,c#,foreach,C#,Foreach,我想知道是否有办法解决我的代码问题: DriveInfo[] dDrives = DriveInfo.GetDrives(); foreach(DriveInfo dDrive in dDrives) { try { string sDrive = dDrive.ToString(); string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);

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

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块并继续搜索。非常感谢您的帮助,谢谢

您拥有的代码应该可以工作,尽管您确实应该重新考虑您的逻辑,但使用异常进行流控制显然是错误的

这将起作用,但不是最佳做法:

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
),以及返回的文件名列表。

编辑: 删除了原来的答案,因为答案不正确


请参阅:有关您的问题的一些建议解决方案。

是的,谢谢,使用异常的更好选择是什么?@Bali-您在代码中访问文件的确切位置?我假定它在这里:string[]sSearch=Directory.GetFiles(sDrive、sFile、SearchOption.AllDirectories)@巴厘岛-不要处理异常,而是记录它以查看到底发生了什么。VS给我的错误是在字符串[]sSearch=Directory.GetFiles(sDrive、sFile、SearchOption.AllDirectories)行中的“访问路径'C:\C:\$Recycle.Bin\S-1-5-21-232317210-4223013802-3689919456-1000\被拒绝”;另见: