我有一个名为FolderHelper的类,其方法为ReadOnly - 目的是检查指定的目录是否为只读并返回bool true或false。
public static bool ReadOnly(string path)
{
DirectoryInfo directoryInfo = new DirectoryInfo(path);
if (directoryInfo.Attributes.HasFlag(FileAttributes.ReadOnly))
{
return true;
}
return false;
}
我已将目录设置为只读但该方法始终返回false - 有人可以提出任何原因吗?
答案 0 :(得分:3)
Readonly标志只能应用于文件,而不能应用于目录。如果您尝试使用Windows资源管理器在目录上设置此标志 - 您最终会得到相同的结果 - 标志不会设置为目录,但可以设置/取消设置为包含的文件。由于flag不能设置为目录 - 显然你无法从目录中获取它。
您可能需要检查此目录的写入权限,以确定用户是否可以创建/修改此目录中包含的文件。您可以使用Directory.GetAccessControl进行检查。
答案 1 :(得分:-1)
在另一篇stackOverflow文章中找到了这个,可能这就是你需要做的事情
C# Test if user has write access to a folder
public bool IsReadOnly(string dirPath) { try { using (FileStream fs = File.Create( Path.Combine( dirPath, Path.GetRandomFileName() ), 1, FileOptions.DeleteOnClose) ) { } return false; } catch { return true; } }