C# Directory.GetFiles不会刷新结果/缓存

C# Directory.GetFiles不会刷新结果/缓存,c#,caching,directory,refresh,getfiles,C#,Caching,Directory,Refresh,Getfiles,我在递归扫描文件夹和查找文件时遇到问题。 在某些文件或文件夹发生更改之前,一切正常。 它似乎从不更新folderlistcache 是否需要刷新或清除缓存,以便重新扫描文件 提前通知 ArrayList list = new ArrayList(); void dirsearch(string sDir) { try { foreach (string d in Directory.GetFiles(sDir)) { foreach

我在递归扫描文件夹和查找文件时遇到问题。 在某些文件或文件夹发生更改之前,一切正常。 它似乎从不更新folderlistcache

是否需要刷新或清除缓存,以便重新扫描文件

提前通知

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
方法,无需递归

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

编辑:修复了打字错误,堆栈溢出需要6个以上字符的编辑

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

看起来您需要FileSystemWatcher类,它监视文件夹并触发事件,告诉您文件更改


有关更多详细信息,请参阅:

我非常怀疑此代码是否工作正常。Matthias的答案是golden。所有GetFiles都是Directory类中的一个方法。你打一次电话,然后就结束了。如果您注意到GetFiles的返回类型是字符串数组,那么这一点就很清楚了。