may danit
may danit

Reputation: 25

Why my DirectoryInfo.GetFiles return 0 results although the folder if full

i try to take 5 newest files from my Directory:

string folder = @"C:\temp";

DirectoryInfo dir = new DirectoryInfo(folder);
var files = dir.GetFiles()
         .OrderByDescending(f => f.LastWriteTime).Take(5);

And this return 0 result although the folder if full f files.

UPDATE:

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

Currently my problem is that i am looking for the newest 5 files but if only 1 file exist in return more than 1 (same file twice)

Upvotes: 0

Views: 638

Answers (1)

Ronan Thibaudau
Ronan Thibaudau

Reputation: 3603

You're calling your Handler passing it ALL files while enumerating EACH file (you're not passing item but files, so if you have 10 times you're saying, 10 times, pass the whole list)

What you're doing :

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

What you probably want to do

        OnFileAddEventHandler(files);

Or if it takes single files

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

Upvotes: 2

Related Questions