在我的网络中,有些文件的访问权限被阻止了。
用户无法打开或读取文件。
当我尝试打开文件时,我收到的唯一消息是“拒绝访问”。
bool isReadOnly = ((File.GetAttributes(Path) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);
我尝试了FileAttributes类下的其他可用选项。 “拒绝访问”没有任何内容匹配。
简而言之,我如何知道c#中是否拒绝访问文件。我正在使用WPF和visual studio .net 2010
每当我尝试通过代码访问它时,我只是得到一个例外。当我尝试手动打开它时,我会得到类似“拒绝访问”的内容。
try
{
IEs = from file in Directory.EnumerateFiles(sDirectoryToBeSearched, sValidExtensions, SearchOption.AllDirectories)
from str in File.ReadLines(file)
where (str.IndexOf(sSearchItem, StringComparison.OrdinalIgnoreCase) >= 0)
select file;
}
catch
{
MessageBox ("Exception arised");
}
即使使用了try catch,由于LINQ查询,也不会处理异常。任何解决方案?>
答案 0 :(得分:1)
不使用LINQ尝试使用递归,这样如果文件或文件夹访问被拒绝,其余的过程将继续。例子如下。
private void SearchDirectory(string folder)
{
foreach (string file in Directory.GetFiles(folder))
{
try
{
// do work;
}
catch
{
// access to the file has been denied
}
}
foreach (string subDir in Directory.GetDirectories(folder))
{
try
{
SearchDirectory(subDir);
}
catch
{
// access to the folder has been denied
}
}
}
答案 1 :(得分:0)
您不必检查FileAttributes
,您需要检查安全列表。
您可以查看示例here,了解如何使用FileSecurity
类。