我有一个名为FolderHelper的类,它的方法是ReadOnly -其目的是检查指定的目录是否是只读的,并返回布尔值true或false。
public static bool ReadOnly(string path)
{
DirectoryInfo directoryInfo = new DirectoryInfo(path);
if (directoryInfo.Attributes.HasFlag(FileAttributes.ReadOnly))
{
return true;
}
return false;
}
我已经将目录设置为只读,但该方法总是返回false --有人能提出原因吗?
发布于 2016-02-11 18:57:26
只读标志只能应用于文件,不能应用于目录。如果你尝试使用windows资源管理器在目录上设置这个标志--你会得到同样的结果--标志不会被设置到目录中,但可以设置/取消设置到它包含的文件中。因为标志不能被设置为目录-显然你不能从目录中获取它。
您可能需要检查此目录的写权限,以确定用户是否可以创建/修改此目录中包含的文件。您可以使用Directory.GetAccessControl进行检查。
发布于 2016-02-11 19:08:05
在另一篇stackOverflow文章中找到了这篇文章,可能这就是您需要做的
C# Test if user has write access to a folder
公共布尔IsReadOnly(string dirPath) { try { using (FileStream fs = File.Create( Path.Combine( dirPath,Path.GetRandomFileName( ),1,FileOptions.DeleteOnClose) ){}返回false;} catch { return true;} }
https://stackoverflow.com/questions/35337364
复制相似问题