Directory.GetFiles不刷新结果/缓存

时间:2014-08-02 19:12:36

标签: c# caching directory refresh getfiles

我在递归扫描文件夹和查找文件时遇到问题。 一切正常,直到一些文件或文件夹更改。 它永远不会更新它看起来的folderlistcache。

是否有刷新或clearcache,所以它会重新扫描文件?

Thnx提前!

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);
    }
}

2 个答案:

答案 0 :(得分:1)

GetFiles在扫描时获取它找到的文件。 没有跟踪变化。

好像你需要FileSystemWatcher类,它会监视文件夹并触发一个事件,告诉你有关文件更改的信息。

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

答案 1 :(得分:0)

您可以使用GetFiles var files = Directory.GetFiles(sDir, "*.txt", SearchOption.AllDirectories); 方法,无需递归

{{1}}

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