Directory.GetFiles() in Modified Date/Time Order

I’ve been forced in to using vb.net for a windows service project which scans a folder of xml files, they need to be processed in order of the files modified date & time.  Directory.GetFiles returns an array of filenames in alphabetic order, I could find precious little information on the net so I thought I’d share what I came up with:-

Imports System.IO

Public Class clsCompareFileInfo

    Implements IComparer

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare

        Dim File1 As FileInfo

        Dim File2 As FileInfo

        File1 = DirectCast(x, FileInfo)

        File2 = DirectCast(y, FileInfo)

        Compare = DateTime.Compare(File1.LastWriteTime, File2.LastWriteTime)

    End Function

End Class

Then to use it…

Dim dirinfo As DirectoryInfo

Dim allFiles As FileInfo

dirinfo = New DirectoryInfo(sSelPath)

allFiles = dirinfo.GetFiles("*.xml")

Array.Sort(allFiles, New clsCompareFileInfo)

For Each fl As FileInfo In allFiles

    MessageBox(fl.FullName.ToString)

Next

To give credit where it’s really due I found the solution in c# at. I just converted the source from c# to vb.net.

This article is part of the GWB Archives. Original Author: Neil Smith

New on Geeks with Blogs