C# Directory.GetFiles不会刷新结果/缓存
我在递归扫描文件夹和查找文件时遇到问题。 在某些文件或文件夹发生更改之前,一切正常。 它似乎从不更新folderlistcache 是否需要刷新或清除缓存,以便重新扫描文件 提前通知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
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的返回类型是字符串数组,那么这一点就很清楚了。