zoukankan      html  css  js  c++  java
  • 关于 System.IO.File.Exists 需要注意的事项

    各位:
     
    .NET Framework 本省在设计的时候,他对于异常没有完全做到抛出,这样可能会有很多意想不到的问题。
     
    比如
    你在asp.net 应用程序中判断文件是否存在,这个文件可能是一个共享路径 ,比如: System.IO.File.Exists(//montaquehou-mis/share/a.file)
    这个文件在资源管理器中可以访问,但是在你的应用程序中一般不能访问。这个时候File.Exists 会返回false,其实文件时存在的。
     
    原因很简单,ASP.NET 默认是本机的 ASPNET 用户,这个用户没有访问权限。
     
    我们看一下File.Exists 的内部实现,(System.IO.FIle 类放在mocorlib.dll 里面,各位可以用类似reflector 之类的工具反编译一下)
     
    public static bool Exists(string path)
    {
          string[] textArray1;
          try
          {
                if (path == null)
                {
                      return false;
                }
                if (path.Length == 0)
                {
                      return false;
                }
                path = Path.GetFullPathInternal(path);
                textArray1 = new string[1];
                textArray1[0] = path;
                new FileIOPermission(1, textArray1, 0, 0).Demand();  //显式的要求一个权限
                return File.InternalExists(path);
          }
          catch (ArgumentException)
          {
          }
          catch (NotSupportedException)
          {
          }
          catch (SecurityException)           //出现异常之后并没有抛出
          {
          }
          catch (IOException)
          {
          }
          catch (UnauthorizedAccessException)
          {
          }
          return false;              //这就是你看到的false
    }
  • 相关阅读:
    新版本支付宝开发流程
    产生随机字串,可用来自动生成密码
    phpcmsv9的分页使用到的函数,直接拿来用就可以了
    js的一些函数
    JS一个简单的计时器
    linux 整理下常用命令
    mysql.sock
    第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
    第三方登录之QQ登录(一)——QQ互联开放平台新建应用
    networkx AttributeError: 'DiGraph' object has no attribute 'edge'
  • 原文地址:https://www.cnblogs.com/qi123/p/9336819.html
Copyright © 2011-2022 走看看