为什么我的DirectoryInfo.GetFiles返回0结果,尽管该文件夹已满

时间:2014-08-28 16:10:51

标签: c# .net

我尝试从我的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个(同一个文件两次)

1 个答案:

答案 0 :(得分:2)

您在调用EACH文件时调用您的处理程序将所有文件传递给您(您没有传递项目而是文件,所以如果您有10次,那么,10次,传递整个文件列表)

你在做什么:

        foreach (var item in files)
            OnFileAddEventHandler(files);

你可能想做什么

        OnFileAddEventHandler(files);

或者如果需要单个文件

        foreach (var item in files)
            OnFileAddEventHandler(item);