文件夹(目录)只读?

时间:2016-02-11 10:54:30

标签: c# .net directoryinfo

我有一个名为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 - 有人可以提出任何原因吗?

2 个答案:

答案 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;
        }
    }