目录中.GetFiles不刷新结果/缓存

本文关键字:结果 缓存 刷新 GetFiles | 更新日期: 2023-09-27 18:16:19

我在递归扫描文件夹并查找文件时遇到了一个问题。一切工作正常,直到一些文件或文件夹发生变化。它似乎从不更新文件夹列表缓存。

是否有办法刷新或清除缓存,以便它将重新扫描文件?

提前感谢!

ArrayList list = new ArrayList();
void dirsearch(string sDir)
{
    try
    {
       foreach (string d in Directory.GetFiles(sDir)) 
       {
         foreach (string f in Directory.GetFiles(d, "*.txt"))
          {
             string foldername = new DirectoryInfo(d).Name;
              String filename = Path.GetFileName("c:''" + f);
              list.Add("C:''" + f);
              list.Add(foldername);
              list.Add(filename);
              MessageBox.Show("found one!");
          }
        dirsearch(d);
       }
    }
    catch (System.Exception excpt) 
    {
        MessageBox.Show(excpt.Message);
    }
}

目录中.GetFiles不刷新结果/缓存

GetFiles获取它恰好在扫描时找到的文件。没有更改的跟踪。

似乎您需要FileSystemWatcher类,它监视文件夹并触发一个事件,告诉您文件更改。

详细信息请参见:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher%28v=vs.110%29.aspx

你可以使用这个重载的GetFiles方法,不需要递归

var files = Directory.GetFiles(sDir, "*.txt", SearchOption.AllDirectories);

edit:修复打字错误,堆栈溢出需要6+字符编辑。