如何检查是否拒绝访问字符串路径?

时间:2012-03-20 20:22:31

标签: c# file-access

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

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以及所有这些。

我已经找到了这个:how can you easily check if access is denied for a file in .NET?

任何帮助?

2 个答案:

答案 0 :(得分:5)

最简单(通常最安全)的选项是执行您现在正在执行的操作,但将代码包装在适当的异常处理中。

然后,您可以明确地从GetFiles(可能是SecurityException DirectoryInfo从{{1}}构造函数中捕获UnauthorizedAccessException,具体取决于路径),并将处理逻辑放在那里

答案 1 :(得分: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();
}