shanon doh
shanon doh

Reputation: 41

How to use Directory.GetFiles to get only gif types (or any other type)?

I'm trying to filter files by extension (in particular case ".gif") but GetFiles method for some reason does not find any files (even if there are definitely files of that type in the folder).

This code gives me list of all files.

private void displaylastanimatedgif()
        {
            var directory = new DirectoryInfo(animatedgifsdirectory);
            var myFile = (from f in directory.GetFiles()
                          orderby f.LastWriteTime descending
                          select f).First();
            if (myFile != null)
                pictureBoxImage(myFile.FullName);
            listBox1.Items.Add(outputfile);
        }

If I add filter to the GetFiles() like Directory.GetFiles("*.gif") I will get exception:

Sequence contains no elements.

Upvotes: 0

Views: 160

Answers (2)

Eden
Eden

Reputation: 4206

You have 3 versions of "GetFiles" method. 2 of which includes a filter option: https://msdn.microsoft.com/en-us/library/system.io.directory.getfiles%28v=vs.110%29.aspx

The version you were using accepts a "path". Not a filter.

  • Option 1 Directory.GetFiles with two arguments:

    var files = Directory.GetFiles(animatedgifsdirectory, "*.gif");
    
  • Option 2 DirectoryInfo.GetFiles instance method takes filter as single parameter:

    var directory = new DirectoryInfo(animatedgifsdirectory);
    var files = directory.GetFiles(animatedgifsdirectory, "*.gif");
    

Upvotes: 3

Kvam
Kvam

Reputation: 2218

Use the search pattern overload on GetFiles:

System.IO.Directory.GetFiles(@"C:\Windows", "*.gif");

Upvotes: 1

Related Questions