DirectoryInfo的GetFiles未显示目录中的实际内容

我正在使用DirectoryInfo的GetFiles(“ *”,SearchOption.AllDirectories)方法来获取目录中的所有文件。然后,我遍历所有文件并调用file.Length以获取原始目录的完整大小。随着应用程序运行,该目录应该会增加。

检查目录大小属于经常运行的定期任务。

这是奇怪的部分。当我对此进行测试时,我看到目录大小从不应该增加。如果我在循环中设置一个断点,我可以看到它被击中了,但是它只是报告陈旧的文件,从不显示它增加。

真正奇怪的是,如果我设置了相同的断点,并且这次从Windows资源管理器中右键单击目录,选择“属性”,并允许应用程序继续运行,则应用程序将识别出目录大小正在增加,并且报告正确的值。

我不确定该细节是否会有所帮助,但是第一次选择“属性”时,我会看到过时的大小,第二次选择时,我会看到正确的大小。但是我只需要选择一次它,应用程序就可以开始认识到它已经增长。

我认为这是由于某些我不知道的缓存所致。不过,我一直在DirectoryInfo对象上使用Refresh()方法,但无济于事。

任何人都知道发生了什么事吗?

编辑:添加代码

获取目录大小的代码:

GetDirectorySize(DirectoryInfo directory)
{
    directory.Refresh(); // Have tried with and without this line
    long size = 0;
    FileInfo[] files = directory.GetFiles("*",SearchOption.AllDirectories);
    foreach (FileInfo file in files)
    {
        size += file.Length;
    }

    return size;
}
panzhiyong0830 回答:DirectoryInfo的GetFiles未显示目录中的实际内容

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3155699.html

大家都在问