Hi
Hier mal ein Code zum Sortieren von Dateien in einem Array:
Sortierklasse:
Anwendung:
Form: frmTestForm
ListBox: ListBoxFiles
5x Button:
- ButtonDirectoryAndFileName
- ButtonFileName
- ButtonCreationDate
- ButtonLastAccess
- ButtonLastWriteTime
Gruß
~blaze~
Hier mal ein Code zum Sortieren von Dateien in einem Array:
Sortierklasse:
VB.NET-Quellcode
- Public Class FileSorter : Implements IComparer(Of String)
- Private fsmFileSortMode As FileSortMode
- Public Function Compare(ByVal x As String, ByVal y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
- Select Case fsmFileSortMode
- Case FileSorterApplication.FileSortMode.DirectoryAndFileName
- Return New CaseInsensitiveComparer().Compare(x, y)
- Case FileSorterApplication.FileSortMode.CreationDate
- Dim timeX As Long = IO.File.GetCreationTime(x).Ticks
- Dim timeY As Long = IO.File.GetCreationTime(y).Ticks
- If timeX < timeY Then
- Return -1
- ElseIf timeX > timeY Then
- Return 1
- Else
- Return 0
- End If
- Case FileSorterApplication.FileSortMode.LastAccess
- Dim timeX As Long = IO.File.GetLastAccessTime(x).Ticks
- Dim timeY As Long = IO.File.GetLastAccessTime(y).Ticks
- If timeX < timeY Then
- Return -1
- ElseIf timeX > timeY Then
- Return 1
- Else
- Return 0
- End If
- Case FileSorterApplication.FileSortMode.LastWriteTime
- Dim timeX As Long = IO.File.GetLastWriteTime(x).Ticks
- Dim timeY As Long = IO.File.GetLastWriteTime(y).Ticks
- If timeX < timeY Then
- Return -1
- ElseIf timeX > timeY Then
- Return 1
- Else
- Return 0
- End If
- Case FileSorterApplication.FileSortMode.FileName
- Return New CaseInsensitiveComparer().Compare(IO.Path.GetFileName(x), _
- IO.Path.GetFileName(y))
- End Select
- End Function
- Public Property FileSortMode() As FileSortMode
- Get
- Return fsmFileSortMode
- End Get
- Set(ByVal value As FileSortMode)
- fsmFileSortMode = value
- End Set
- End Property
- End Class
- Public Enum FileSortMode As Integer
- DirectoryAndFileName = 0
- FileName = 1
- CreationDate = 2
- LastAccess = 3
- LastWriteTime = 4
- End Enum
Anwendung:
Form: frmTestForm
ListBox: ListBoxFiles
5x Button:
- ButtonDirectoryAndFileName
- ButtonFileName
- ButtonCreationDate
- ButtonLastAccess
- ButtonLastWriteTime
VB.NET-Quellcode
- Public Class frmTestForm
- Dim staFiles() As String = IO.Directory.GetFiles("C:\Temp", "*.*", IO.SearchOption.AllDirectories)
- Dim fsSorter As New FileSorter
- Private Sub ButtonDirectoryAndFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDirectoryAndFileName.Click
- fsSorter.FileSortMode = FileSortMode.DirectoryAndFileName
- Array.Sort(staFiles, fsSorter)
- ListBoxFiles.Items.Clear()
- ListBoxFiles.Items.AddRange(staFiles)
- End Sub
- Private Sub ButtonFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonFileName.Click
- fsSorter.FileSortMode = FileSortMode.FileName
- Array.Sort(staFiles, fsSorter)
- ListBoxFiles.Items.Clear()
- ListBoxFiles.Items.AddRange(staFiles)
- End Sub
- Private Sub ButtonCreationDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCreationDate.Click
- fsSorter.FileSortMode = FileSortMode.CreationDate
- Array.Sort(staFiles, fsSorter)
- ListBoxFiles.Items.Clear()
- ListBoxFiles.Items.AddRange(staFiles)
- End Sub
- Private Sub ButtonLastAccess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLastAccess.Click
- fsSorter.FileSortMode = FileSortMode.LastAccess
- Array.Sort(staFiles, fsSorter)
- ListBoxFiles.Items.Clear()
- ListBoxFiles.Items.AddRange(staFiles)
- End Sub
- Private Sub ButtonLastWriteTime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLastWriteTime.Click
- fsSorter.FileSortMode = FileSortMode.LastWriteTime
- Array.Sort(staFiles, fsSorter)
- ListBoxFiles.Items.Clear()
- ListBoxFiles.Items.AddRange(staFiles)
- End Sub
- End Class
Gruß
~blaze~