获取文件时出现System.UnauthorizedAccessException

用户名

之前,我曾问过一个非常类似的问题但这与获取目录有关,而这与文件有关。这些代码彼此有点不同。自从我尝试将其转换为看起来像我的旧问题答案以来,我一直无法使其工作。

string[] files = Directory.GetFiles(ScanPath, "*.*", System.IO.SearchOption.AllDirectories);
DateTime From = DateTime.Now.AddHours(-24);
DateTime To = DateTime.Now;

foreach (string name in files)
{
   FileInfo file = new FileInfo(name);
   string fullname = file.FullName;

   if (file.LastWriteTime >= From & file.LastWriteTime <= To && file.Length >= ScanSize)
      Console.WriteLine(file.FullName + " ; " + "last changed at  " + " ; " + file.LastWriteTime.ToString());
}

我遇到了与其他问题相同的错误。因为我不知道将代码放在哪里foreach由于它不是枚举,而是一个Directory.GetFiles()

发生错误的原因:

Directory.GetFiles(ScanPath, "*", SearchOption.AllDirectories);

因为这会立即获取目录的所有文件。但是,如果删除它,它只会获取给定路径中的文件,而不会包含子目录中的任何文件。因此,我被告知要应用递归。

我是系统的管理员,我打算在整个数据驱动器上运行它。D:\

我希望这里的任何人都知道一个很好的例子。

托尼

您的应用无法访问某些文件夹,对于其他文件夹,您可以使用以下代码:

void DiscoverDirs(string where, List<string> files, Func<FileInfo, bool> filter)
{
    try
    {
        var di = new DirectoryInfo(where);
        files.AddRange(di.EnumerateFiles().Where(filter).Select(x => x.FullName));

        foreach (var dir in Directory.GetDirectories(where))
        {
            DiscoverDirs(dir, files, filter);
        }
    }
    catch
    {
        // no access fo this dir, ignore
    }
}

用法:

DateTime From = DateTime.Now.AddHours(-24);
DateTime To = DateTime.Now;
var ScanSize = 5*1024*1024;

var list = new List<string>();
DiscoverDirs(@"C:\", list, 
    file => file.LastWriteTime >= From & file.LastWriteTime <= To && file.Length >= ScanSize);

foreach (string name in list)
{
    FileInfo file = new FileInfo(name);
    string fullname = file.FullName;

    Console.WriteLine(file.FullName + " ; " + "last changed at  " + " ; " + file.LastWriteTime.ToString());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

读取文件时出现UnauthorizedAccessException

加载XML文件时出现System.UnauthorizedAccessException错误

创建XML文件时出现UnauthorizedAccessException

以%temp%读取文件时出现随机UnauthorizedAccessException

XML System.UnauthorizedAccessException

Outlook 赎回 - 从本地文件夹打开 .msg 文件时出现权限问题 (System.UnauthorizedAccessException)

编写单元测试时出现System.UnauthorizedAccessException

写入安装路径时出现 System.UnauthorizedAccessException

尝试从asp.net应用程序写入文件时出现System.UnauthorizedAccessException

保存文件时出现UnauthorizedAccessException,但可以创建目录

初始化SpeechSynthesizer时出现UnauthorizedAccessException

未处理System.UnauthorizedAccessException

FileIO System.UnauthorizedAccessException错误

ActiveDirectory更新获取UnauthorizedAccessException的用户

打开文件时Windows Phone 8 UnauthorizedAccessException

UnauthorizedAccessException时如何跳过目录或文件

Botframework - 主动 - 冷调用时出现 UnauthorizedAccessException

uwp 流写入器 System.UnauthorizedAccessException

Azure服务总线System.UnauthorizedAccessException

mscorlib.dll中的System.UnauthorizedAccessException

System.UnauthorizedAccessException:拒绝访问路径“ ...”

无法创建目录:System.UnauthorizedAccessException 错误

向共享点询问列表中的项目时出现 UnauthorizedAccessException

Windows服务-安装服务(C#)时出现UnauthorizedAccessException错误

为什么在此文件夹上出现UnauthorizedAccessException?

从网络共享读取文件时,为什么会出现UnauthorizedAccessException?

尝试使用先前打开的文件打开StreamWriter时发生System.UnauthorizedAccessException

使用Get-Acl时获取引起UnauthorizedAccessException的文件或目录的路径

System.UnauthorizedAccessException:VS2013拒绝访问路径