Dateien innerhalb bestimmter Zeiträume zählen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    Dateien innerhalb bestimmter Zeiträume zählen

    Hallo,

    ich lese in einer Directory und möchte wissen wieviele Dateien tageweise dort angelegt werden. Ich krieg die richtigen Zahlen im Test, aber ich wollte trotzdem nachfragen ob ich das so richtig mache:

    VB.NET-Quellcode

    1. Dim Ende As Date = Today.AddDays(-1)
    2. Dim Beginn As Date = Today.AddDays(-30)
    3. For i = 0 To 29
    4. Dim bis As Date = Ende.AddDays(i * (-1)).AddHours(18)
    5. Dim von As Date = Ende.AddDays((i + 1) * (-1)).AddHours(18)
    6. Dim dir As New DirectoryInfo("derpfad")
    7. Dim files = dir.GetFiles.ToList
    8. Dim filenumber = files.Where(Function(x) x.LastWriteTime >= von AndAlso x.LastWriteTime <= bis).Count
    9. ...

    Hmnaja. Wenn man von der Berechnung absieht, die ich mir nach Klammerauflösung einfacher vorstelle, find ich es Overkill, Zeile#8 und #9 immer und immer wieder auszuführen. Zieh die Zeilen vor die For-Schleife, damit da der PC nicht immer wieder dasselbe machen muss. Messbare Performancebesserung ist da nicht zu erwarten, aber wenn Du die Frage schon stellst … :rolleyes:

    Und benennungstechnisch ist filenumber falsch. filecount (oder eben FileCount) ist korrekt, deswegen hast Du ja am Ende der Zeile auch .Count stehen. filenumber wäre eine Art Dateiindexnummer.
    Wozu hast Du eigentlich Beginn?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Stimmt Beginn hatte ich aus der Version davor noch drin.

    VB.NET-Quellcode

    1. Dim Ende As Date = DateTime.Today.AddDays(-1)
    2. Dim dir As New DirectoryInfo("path")
    3. Dim files = dir.GetFiles.ToList
    4. For i = 0 To 29
    5. Dim bis As Date = Ende.AddDays(i * (-1)).AddHours(18)
    6. Dim von As Date = Ende.AddDays(i * (-1) - 1).AddHours(18)
    7. Dim filecount = files.Where(Function(x) x.LastWriteTime >= von AndAlso x.LastWriteTime <= bis).Count


    Was ich zu number sagen kann: Im Englischen sagt man auch "a number of files" zu einer Anzahl von Dateien^^

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    @Haudruferzappeltnoch Es ist doch immer noch so.
    Machst Du

    VB.NET-Quellcode

    1. Dim bis As Date = Ende.AddDays(-i).AddHours(18)
    2. Dim von As Date = Ende.AddDays(-i - 1).AddHours(18)
    Gugst Du Unäres Minus
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!