C# 文件夹(目录)只读?

C# 文件夹(目录)只读?,c#,.net,directoryinfo,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)) {

我有一个名为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-有人能提出原因吗

只读标志只能应用于文件,不能应用于目录。如果您尝试使用windows资源管理器在目录上设置此标志-您将得到相同的结果-此标志将不会设置为目录,但可以设置/取消设置为其包含的文件。由于该标志不能设置为目录-显然,您无法从目录中获取它


您可能需要检查此目录的写入权限,以确定用户是否可以创建/修改此目录中包含的文件。您可以使用来检查它。

在另一篇stackOverflow文章中发现了这一点,可能这就是您需要做的


Windows文件系统上的目录不能设置为只读。请仔细查看上面的1。您可以提到,
标志将不会设置,但它将被设置/取消设置为仅包含所有文件
这已被问了几次,请参见此处@downvoter…请解释,以便我可以改进我的答案
 public bool IsReadOnly(string dirPath)
    {
        try
        {
            using (FileStream fs = File.Create(
                Path.Combine(
                    dirPath, 
                    Path.GetRandomFileName()
                ), 
                1,
                FileOptions.DeleteOnClose)
            )
            { }
            return false;
        }
        catch
        {

                return true;
        }
    }