目录中.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获取它恰好在扫描时找到的文件。没有更改的跟踪。
似乎您需要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+字符编辑。