1

我想知道如何测试我是否可以访问字符串路径。这是我使用的代码:

using System;
using System.IO;

namescpace prog1
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\Admin";
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileInfo fil in dir.GetFiles())
            {
                //At dir.GetFiles, I get an error  saying
                //access to the string path is denied.

                Console.WriteLine(fil.Name);
            }
            Console.ReadLine();
        }
    }
}

我想测试访问是否被拒绝(到字符串路径)然后执行 GetFiles 和所有这些。

我已经发现了这一点:如何轻松检查 .NET 中文件的访问是否被拒绝?

有什么帮助吗?

4

2 回答 2

5

最简单(通常也是最安全)的选择是只做你现在正在做的事情,但将代码包装在适当的异常处理中。

然后,您可以从(可能来自构造函数,具体取决于路径)显式捕获UnauthorizedAccessException ,并将您的处理逻辑放在那里。GetFilesSecurityExceptionDirectoryInfo

于 2012-03-20T20:25:13.810 回答
2

可以做这样的事情:

static void Main(string[] args)
{
     string path = @"C:\Users\Admin";
     DirectoryInfo dir = new DirectoryInfo(path); 
     FileInfo[] files = null;
     try {
            files = dir.GetFiles();
     }
     catch (UnauthorizedAccessException ex) {
         // do something and return
         return;
     }

     //else continue
     foreach (FileInfo fil in files )
     {
        //At dir.GetFiles, I get an error  saying
        //access to the string path is denied.

         Console.WriteLine(fil.Name);
      }
      Console.ReadLine();
}
于 2012-03-20T20:28:28.707 回答