【问题标题】:skip directories don't have required permission c#跳过目录没有所需的权限c#
【发布时间】:2015-05-19 12:25:41
【问题描述】:
        private int GetFileCount(DirectoryInfo directory)
        {
            int retVal = directory.GetFiles().Length;

            try
            {
                Array.ForEach(directory.GetDirectories(), dir =>
                    {
                        retVal += GetFileCount(dir);
                    });
            }
            catch (UnauthorizedAccessException ex)
            {                
                //Here stops the execution
            }

            return retVal;
        }

当我扫描任何磁盘驱动器时,我已经编写了上面的代码...给了我访问被拒绝的异常..来处理异常写入的 catch 块,但它会停止进一步的迭代..应该如何继续进一步的迭代

【问题讨论】:

    标签: .net c#-4.0 directory


    【解决方案1】:

    在 catch 块中,请检查 retval 是否为 null ,如果是,则使用 continue 关键字并增加计数器值。这是一个示例:

    private int GetFileCount( )
        { 
                string[] subdirectories = Directory.GetDirectories(@"C:\");
                string[] result = null;
    
                if (subdirectories.Length > 0)
                {
                    for (int i = 0; i < subdirectories.Length - 1; i++)
                    {
                        try
                        {
                            result = Directory.GetFiles(subdirectories[i]);
                        }
                        catch (UnauthorizedAccessException ex)
                        {
                            if (result == null)
                            {
                                i += 1;
                                continue;
                            }
                        }
                    }
                }          
    
            return 1;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2015-06-05
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多