我尝试从我的Directory
中获取5个最新文件:
string folder = @"C:\temp";
DirectoryInfo dir = new DirectoryInfo(folder);
var files = dir.GetFiles()
.OrderByDescending(f => f.LastWriteTime).Take(5);
如果文件夹是完整的f文件,则返回0结果。
更新:
private static List<string> _folders;
public delegate void OnFileAddDelegate(FileInfo[] files);
public event OnFileAddDelegate OnFileAddEventHandler;
public void SearchFiles()
{
foreach (string folder in _folders)
{
if (Directory.Exists(folder))
{
DirectoryInfo dir = new DirectoryInfo(folder);
var files = dir.GetFiles()
.OrderByDescending(f => f.LastWriteTime).Take(5).ToArray();
foreach (var item in files)
OnFileAddEventHandler(files);
}
}
}
目前我的问题是我正在寻找最新的5个文件,但如果只有1个文件存在,则返回多于1个(同一个文件两次)
答案 0 :(得分:2)
您在调用EACH文件时调用您的处理程序将所有文件传递给您(您没有传递项目而是文件,所以如果您有10次,那么,10次,传递整个文件列表)
你在做什么:
foreach (var item in files)
OnFileAddEventHandler(files);
你可能想做什么
OnFileAddEventHandler(files);
或者如果需要单个文件
foreach (var item in files)
OnFileAddEventHandler(item);