vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Dateisystem · Ordner & Verzeichnisse   |   VB-Versionen: VB5, VB606.08.04
Verzeichnis sortiert nach Dateidatum auslesen

Dieser Tipp zeigt, wie sich alle Dateien eines Ordners sortiert nach Datum/Zeit in ein Array auslesen lassen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  27.295 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Nachfolgende Funktion ermittelt alle Dateien eines Ordners und gibt diese sortiert nach Datum/Zeit als String-Array zurück.

Public Function DirReadFiles(ByVal sPath As String) As Variant
  Dim sFile As String
  Dim vDate As Variant
  Dim nCount As Long
  Dim i As Long
  ReDim sFiles(0) As String
 
  ' ggf. abschließenden Backslash anfügen
  If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
 
  ' alle Dateien ermitteln und in ein Array speichern
  nCount = -1
  sFile = Dir$(sPath & "*.*")
  Do While Len(sFile) > 0
    If sFile <> "." And sFile <> ".." Then
      ' Array bei Bedarf redimensionieren
      nCount = nCount + 1
      If UBound(sFiles) < nCount Then
        ReDim Preserve sFiles(nCount * 2)
      End If
 
      ' Datum/Zeit ermitteln
      vDate = FileDateTime(sPath & sFile)
 
      ' Array füllen
      sFiles(nCount) = Format$(vDate, "yyyymmdd hhnnss") & sFile
    End If
    sFile = Dir$
  Loop
 
  ' Array nach Datum/Zeit sortieren
  If nCount >= 0 Then
    ' Array auf korrekte Größe bringen
    ReDim Preserve sFiles(nCount)
 
    ' Array sortieren
    QuickSort sFiles(), 0, nCount
 
    ' Datum/Zeit aus dem Array extrahieren
    For i = 0 To nCount
      sFiles(i) = Mid$(sFiles(i), 16)
    Next i
 
    DirReadFiles = sFiles    
  End If  
End Function

Zum Sortieren des Arrays greifen wir auf den Tipp  QuickSort in VB zurück.

Beispiel:
Alle Dateien des Ordners "d:\temp" ermitteln und sortiert nach Datum/Zeit in einem ListView-Control anzeigen.

Private Sub Form_Load()
  Dim sPath As String
  Dim vFiles As Variant
  Dim i As Long
  Dim oItem As ListItem
 
  ' ListView-Spalten erstellen
  With ListView1.ColumnHeaders
    .Add , , "Dateiname"
    .Add , , "Datum/Zeit"
  End With
  ListView1.View = lvwReport
 
  ' alle Dateien aus D:\Temp ermitteln 
  ' und sortier nach Datum/Zeit ins ListView übertragen
  sPath = "d:\temp\"
  vFiles = DirReadFiles(sPath)
  If Not IsEmpty(vFiles) Then
    For i = 0 To UBound(vFiles)
      Set oItem = ListView1.ListItems.Add()
      oItem.Text = vFiles(i)
      oItem.SubItems(1) = FileDateTime(sPath & vFiles(i))
    Next i
  End If
End Sub

Dieser Tipp wurde bereits 27.295 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel