【发布时间】:2014-03-26 06:56:00
【问题描述】:
到目前为止,我遇到的所有案例都是这样的:
- 尝试存储文件
- 如果有文件保存就好了
- 如果文件无法存储,请告知(无路径、无权限等)
目前我正面临如何检查文件是否可以在不存储的情况下存储的问题。一般来说,我什至不知道要问 Google 什么,因为我得到的所有返回结果都是关于权限的,在 Linux 中是通用的,我在 C#/Windows 下需要它。
如何进行这样的检查?
【问题讨论】:
标签: c# file-io privileges
到目前为止,我遇到的所有案例都是这样的:
目前我正面临如何检查文件是否可以在不存储的情况下存储的问题。一般来说,我什至不知道要问 Google 什么,因为我得到的所有返回结果都是关于权限的,在 Linux 中是通用的,我在 C#/Windows 下需要它。
如何进行这样的检查?
【问题讨论】:
标签: c# file-io privileges
由于您不想尝试写入文件夹,您可以考虑这种方法。
你可以尝试一下:
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。
【讨论】:
使用try catch 块怎么样?如果发生任何异常 - 您可以捕获它并确定无法保存文件。若无异常,则文件保存成功。
【讨论】:
File.IO 命名空间中有Directory.GetAccessControl 方法和File.GetAccessControl 方法。
如果你想在实际写入文件之前知道状态,检查指定目录是否对用户有写入权限。如果一切顺利,请写入文件。您也可以按照其他答案中的建议使用 try catch 块。
【讨论】: