【问题标题】:How to check if file can be stored in particular location without storing/creating file?如何检查文件是否可以存储在特定位置而不存储/创建文件?
【发布时间】:2014-03-26 06:56:00
【问题描述】:

到目前为止,我遇到的所有案例都是这样的:

  • 尝试存储文件
  • 如果有文件保存就好了
  • 如果文件无法存储,请告知(无路径、无权限等)

目前我正面临如何检查文件是否可以在不存储的情况下存储的问题。一般来说,我什至不知道要问 Google 什么,因为我得到的所有返回结果都是关于权限的,在 Linux 中是通用的,我在 C#/Windows 下需要它。

如何进行这样的检查?

【问题讨论】:

    标签: c# file-io privileges


    【解决方案1】:

    由于您不想尝试写入文件夹,您可以考虑这种方法。

    你可以尝试一下:

    System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(folderPath);
    

    public bool CanWriteToPath(string folderPath) 
    {
        try 
        { 
            var ds = Directory.GetAccessControl(folderPath);
            return true;
        } catch (UnauthorizedAccessException)
        {
            return false;
        }
    }
    

    只有你有权限才会成功。

    抱歉,它仍然必须使用 try/catch。

    【讨论】:

    • 试试看,抓到我就好了。谢谢,我要用它!
    【解决方案2】:

    使用try catch 块怎么样?如果发生任何异常 - 您可以捕获它并确定无法保存文件。若无异常,则文件保存成功。

    【讨论】:

    • 是的,我以前用过。现在我必须在不创建文件的情况下这样做。在某些情况下我可以将文件写入系统,但我不能创建“测试”文件来检查是否可能。
    • 我认为您可以使用“FileIOPermission”类。 msdn.microsoft.com/en-us/library/…
    【解决方案3】:

    File.IO 命名空间中有Directory.GetAccessControl 方法和File.GetAccessControl 方法。

    如果你想在实际写入文件之前知道状态,检查指定目录是否对用户有写入权限。如果一切顺利,请写入文件。您也可以按照其他答案中的建议使用 try catch 块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 2010-09-23
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多