一种更优雅的方式来读取和写入驱动器中的所有可访问文件夹

时间:2017-09-18 14:21:42

标签: c# directoryinfo unauthorizedaccessexcepti

我正在尝试编写一个简单的代码,将驱动器中的所有文件夹写入控制台。

要跳过未经授权访问的文件夹,我使用了try catch块。有些程序员不接受这种优雅的编码。

有没有更好的方法来做到这一点。

这是我写的。

static void Main(string[] args)
    {
        Queue<DirectoryInfo> directories = new Queue<DirectoryInfo>();

        DirectoryInfo dr = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);

        directories.Enqueue(dr.Root);
        DirectoryInfo[] subdr = null;

        while (directories.Count > 0)
        {
            dr = directories.Dequeue();

            Console.WriteLine(dr.ToString());

            try
            {
                subdr = dr.GetDirectories();

                foreach (DirectoryInfo directory in subdr)
                {
                    if (directory.Exists)
                        directories.Enqueue(directory);
                }
            }
            catch (UnauthorizedAccessException e) { Console.WriteLine(e.Message); }
        }
    }

0 个答案:

没有答案