Dateien Sortieren

    • VB.NET

      Dateien Sortieren

      Hi
      Hier mal ein Code zum Sortieren von Dateien in einem Array:
      Sortierklasse:

      VB.NET-Quellcode

      1. Public Class FileSorter : Implements IComparer(Of String)
      2. Private fsmFileSortMode As FileSortMode
      3. Public Function Compare(ByVal x As String, ByVal y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
      4. Select Case fsmFileSortMode
      5. Case FileSorterApplication.FileSortMode.DirectoryAndFileName
      6. Return New CaseInsensitiveComparer().Compare(x, y)
      7. Case FileSorterApplication.FileSortMode.CreationDate
      8. Dim timeX As Long = IO.File.GetCreationTime(x).Ticks
      9. Dim timeY As Long = IO.File.GetCreationTime(y).Ticks
      10. If timeX < timeY Then
      11. Return -1
      12. ElseIf timeX > timeY Then
      13. Return 1
      14. Else
      15. Return 0
      16. End If
      17. Case FileSorterApplication.FileSortMode.LastAccess
      18. Dim timeX As Long = IO.File.GetLastAccessTime(x).Ticks
      19. Dim timeY As Long = IO.File.GetLastAccessTime(y).Ticks
      20. If timeX < timeY Then
      21. Return -1
      22. ElseIf timeX > timeY Then
      23. Return 1
      24. Else
      25. Return 0
      26. End If
      27. Case FileSorterApplication.FileSortMode.LastWriteTime
      28. Dim timeX As Long = IO.File.GetLastWriteTime(x).Ticks
      29. Dim timeY As Long = IO.File.GetLastWriteTime(y).Ticks
      30. If timeX < timeY Then
      31. Return -1
      32. ElseIf timeX > timeY Then
      33. Return 1
      34. Else
      35. Return 0
      36. End If
      37. Case FileSorterApplication.FileSortMode.FileName
      38. Return New CaseInsensitiveComparer().Compare(IO.Path.GetFileName(x), _
      39. IO.Path.GetFileName(y))
      40. End Select
      41. End Function
      42. Public Property FileSortMode() As FileSortMode
      43. Get
      44. Return fsmFileSortMode
      45. End Get
      46. Set(ByVal value As FileSortMode)
      47. fsmFileSortMode = value
      48. End Set
      49. End Property
      50. End Class
      51. Public Enum FileSortMode As Integer
      52. DirectoryAndFileName = 0
      53. FileName = 1
      54. CreationDate = 2
      55. LastAccess = 3
      56. LastWriteTime = 4
      57. End Enum


      Anwendung:
      Form: frmTestForm
      ListBox: ListBoxFiles
      5x Button:
      - ButtonDirectoryAndFileName
      - ButtonFileName
      - ButtonCreationDate
      - ButtonLastAccess
      - ButtonLastWriteTime

      VB.NET-Quellcode

      1. Public Class frmTestForm
      2. Dim staFiles() As String = IO.Directory.GetFiles("C:\Temp", "*.*", IO.SearchOption.AllDirectories)
      3. Dim fsSorter As New FileSorter
      4. Private Sub ButtonDirectoryAndFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDirectoryAndFileName.Click
      5. fsSorter.FileSortMode = FileSortMode.DirectoryAndFileName
      6. Array.Sort(staFiles, fsSorter)
      7. ListBoxFiles.Items.Clear()
      8. ListBoxFiles.Items.AddRange(staFiles)
      9. End Sub
      10. Private Sub ButtonFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonFileName.Click
      11. fsSorter.FileSortMode = FileSortMode.FileName
      12. Array.Sort(staFiles, fsSorter)
      13. ListBoxFiles.Items.Clear()
      14. ListBoxFiles.Items.AddRange(staFiles)
      15. End Sub
      16. Private Sub ButtonCreationDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCreationDate.Click
      17. fsSorter.FileSortMode = FileSortMode.CreationDate
      18. Array.Sort(staFiles, fsSorter)
      19. ListBoxFiles.Items.Clear()
      20. ListBoxFiles.Items.AddRange(staFiles)
      21. End Sub
      22. Private Sub ButtonLastAccess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLastAccess.Click
      23. fsSorter.FileSortMode = FileSortMode.LastAccess
      24. Array.Sort(staFiles, fsSorter)
      25. ListBoxFiles.Items.Clear()
      26. ListBoxFiles.Items.AddRange(staFiles)
      27. End Sub
      28. Private Sub ButtonLastWriteTime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLastWriteTime.Click
      29. fsSorter.FileSortMode = FileSortMode.LastWriteTime
      30. Array.Sort(staFiles, fsSorter)
      31. ListBoxFiles.Items.Clear()
      32. ListBoxFiles.Items.AddRange(staFiles)
      33. End Sub
      34. End Class


      Gruß
      ~blaze~