Feedback

VB - Dateien nach Datum sortieren

Veröffentlicht von am 09.09.2008
(3 Bewertungen)
Diese Funktion kann Dateien die mit kompletten Pfad in einem Arry angegeben werden nach einen von 3 verschiedenen Zeitangaben einer Datei sortiert werden. Die Zeiten LastAccessTime, LastWriteTime und CreationTime stehen zur Verfügung. Das Array kann nach einen von diesen 3 Zeiten sortiert werden.
Public Enum EnumFileAttributes As Integer
    LastAccessTime = 0
    LastWriteTime = 1
    CreationTime = 2
End Enum

''' <summary>
''' Diese Funktion kann Dateien die mit kompletten Pfad in einem Arry angegeben werden
''' nach einen von 3 verschiedenen Zeitangaben einer Datei sortiert werden.
''' Die Zeiten LastAccessTime, LastWriteTime und CreationTime stehen zur Verfügung.
''' Das Array kann nach einen von diesen 3 Zeiten sortiert werden.
''' </summary>
''' <param name="FileArray">Das zu sortierende Array mit den komlpetten Pfaden der zu sortierenden Dateien</param>
''' <param name="TimeField">Gibt die Zeit an nach der Sortiert werden soll</param>
''' <param name="DoReverse">Gibt an ob das Array nach der sortierung umgekehrt werden soll (Neue Dateien zuerst)</param>
Public Sub SortFilesByDate(ByRef FileArray() As String, ByVal TimeField As EnumFileAttributes, Optional ByVal DoReverse As Boolean = False)
    Dim Untouched As Boolean
    Dim ArrLen As Long = FileArray.Length - 1
    Dim TmpValue As String

    Select Case TimeField
        Case EnumFileAttributes.CreationTime
            Do
                Untouched = True
                For i As Long = 0 To ArrLen - 1
                    If File.GetCreationTime(FileArray(i)) > File.GetCreationTime(FileArray(i + 1)) Then
                        TmpValue = FileArray(i)
                        FileArray(i) = FileArray(i + 1)
                        FileArray(i + 1) = TmpValue
                        Untouched = False
                    End If
                Next i
            Loop Until Untouched
        Case EnumFileAttributes.LastAccessTime
            Do
                Untouched = True
                For i As Long = 0 To ArrLen - 1
                    If File.GetLastAccessTime(FileArray(i)) > File.GetLastAccessTime(FileArray(i + 1)) Then
                        TmpValue = FileArray(i)
                        FileArray(i) = FileArray(i + 1)
                        FileArray(i + 1) = TmpValue
                        Untouched = False
                    End If
                Next i
            Loop Until Untouched
        Case EnumFileAttributes.LastWriteTime
            Do
                Untouched = True
                For i As Long = 0 To ArrLen - 1
                    If File.GetLastWriteTime(FileArray(i)) > File.GetLastWriteTime(FileArray(i + 1)) Then
                        TmpValue = FileArray(i)
                        FileArray(i) = FileArray(i + 1)
                        FileArray(i + 1) = TmpValue
                        Untouched = False
                    End If
                Next i
            Loop Until Untouched
    End Select

    If DoReverse = True Then Array.Reverse(FileArray)
End Sub
Abgelegt unter Sortieren, Datei, Array, BubbleSort.

1 Kommentare zum Snippet

Volker Steitz schrieb am 09.09.2008:
Sehr praktisch
 

Logge dich ein, um hier zu kommentieren!