Wenn Sie das FILESYSTEMOBJECT-Objekt verwenden, um eine Liste von Dateien in einem Verzeichnis abzurufen, haben Sie festgestellt, dass Sie die Art und Weise, wie sie sortiert werden, nicht steuern können, z. B. Sortieren nach Name, Sortieren nach Erweiterung, Sortieren nach Dateigröße usw. Versuchen wir es Verwenden Sie ein Array, um sie in der richtigen Reihenfolge anzuordnen.
Wenn Sie nach Namen sortieren möchten, ist dies sehr einfach. Wenn Sie jedoch nach Dateigröße, Dateierstellungszeit usw. sortieren möchten, ist dies etwas mühsam. Wir werden dies über ein 2D-Array tun.
Der folgende Code zeigt, wie wir unser Ziel durch Auswählen und Sortieren erreichen. Klicken Sie zum Sortieren und zweimal, um umgekehrt zu sortieren.
<HTML> <KOPF> <TITLE>Demonstration der Dateisortierung</TITLE> </HEAD> <KÖRPER> <% 'Legen Sie ein Demo-Verzeichnis fest, :) CONST-VERZEICHNIS = / ' Verwenden Sie Konstanten, um die Sortiermethode zu definieren CONST FILE_NAME = 0 'Nach Namen sortieren...und so weiter CONST FILE_EXT = 1 CONST FILE_TYPE = 2 CONST FILE_SIZE = 3 CONST FILE_CREATED = 4 CONST FILE_MODIFIED = 5 CONST FILE_ACCESSED = 6 'Rufen Sie den Sortierbefehl ab. Standardmäßig wird nach Name sortiert req = Request(sortBy) Wenn Len(req) < 1, dann sortBy = 0, sonst sortBy = CInt(req) req = Request(priorSort) Wenn Len(req) < 1, dann priorSort = -1, sonst priorSort = CInt(req) „Umgekehrte Reihenfolge festlegen.“ Wenn sortBy = priorSort Then umgekehrt = wahr priorSort = -1 Anders umgekehrt = falsch priorSort = sortBy Ende wenn ' Als nächstes beginnen wir mit unserem eigentlichen Code. . . path = Server.MapPath(VERZEICHNIS) Setze fso = CreateObject(Scripting.FileSystemObject) Setze theCurrentFolder = fso.GetFolder(path) Setzen Sie curFiles = theCurrentFolder.Files „Machen Sie eine Schleife über diese Dateien.“ Dim theFiles() ReDim theFiles(500) ' Ich habe eine zufällige Größe festgelegt currentSlot = -1 ' Start vor dem ersten Slot „Wir haben alle relevanten Informationen der Datei in das Array eingefügt.“ Für jedes fileItem in curFiles fname = fileItem.Name fext = InStrRev(fname, .) Wenn fext < 1, dann fext = Else fext = Mid(fname,fext+1) ftype = fileItem.Type fsize = fileItem.Size fcreate = fileItem.DateCreated fmod = fileItem.DateLastModified faccess = fileItem.DateLastAccessed currentSlot = currentSlot + 1 Wenn currentSlot > UBound(theFiles) Dann ReDim Preserve theFiles(currentSlot + 99) Ende wenn „Fügen Sie es in das Array ein.“ theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess) Nächste „Da sich nun alles im Array befindet, beginnen Sie mit dem nächsten Schritt.“ fileCount = currentSlot 'Anzahl der Dateien ReDim Preserve theFiles(currentSlot) ' Sortieren ' (8 bedeutet Zeichenfolge) Wenn VarType(theFiles(0)(sortBy)) = 8 Dann Wenn umgekehrt, dann kind = 1, sonst kind = 2 ' Zeichen sortieren Anders Wenn umgekehrt, dann Art = 3 Sonst Art = 4 'Anzahl, Zeit. . . Ende wenn Für i = fileCount TO 0 Schritt -1 minmax = theFiles(0)(sortBy) minmaxSlot = 0 Für j = 1 bis i Wählen Sie die Fallart aus Fall 1 mark = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) < 0) Fall 2 mark = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) > 0) Fall 3 mark = (theFiles(j)(sortBy) < minmax) Fall 4 mark = (theFiles(j)(sortBy) > minmax) Endauswahl Wenn markieren, dann minmax = theFiles(j)(sortBy) minmaxSlot = j Ende wenn Nächste Wenn minmaxSlot <> i Dann temp = theFiles(minmaxSlot) theFiles(minmaxSlot) = theFiles(i) theFiles(i) = temp Ende wenn Nächste ' Beenden %> <FORM Name=doSort Method=Get> <INPUT Type=Hidden Name=priorSort Value=<% = priorSort %>> <INPUT Type=Hidden Name=sortBy Value=-1> </FORM> <SCRIPT Language=JavaScript> Funktion reSort(which) { document.doSort.sortBy.value = which; document.doSort.submit(); } </SCRIPT> <MITTE> <SCHRIFTGRÖSSE=+2> Zeigt <% = (fileCount+1) %> Dateien in diesem Verzeichnis <% = Pfad %> an </FONT> <P> Klicken Sie auf Sortieren und dann erneut auf Sortierung umkehren <P> <TABLE Border=1 CellPadding=3> <TR> <TH><A HREF=javascript:reSort(0);>Dateiname</A></TH> <TH><A HREF=javascript:reSort(1);>Erweiterung</A></TH> <TH><A HREF=javascript:reSort(2);>Typ</A></TH> <TH><A HREF=javascript:reSort(3);>Größe</A></TH> <TH><A HREF=javascript:reSort(4);>Erstellungszeit</A></TH> <TH><A HREF=javascript:reSort(5);>Letzte Änderungszeit</A></TH> <TH><A HREF=javascript:reSort(6);>Letzte Zugriffszeit</A></TH> </TR> <% Für i = 0 To fileCount Response.Write <TR> & vbNewLine Für j = 0 To UBound(theFiles(i)) Response.Write <TD> & theFiles(i)(j) & </TD> & vbNewLine Nächste Response.Write </TR> & vbNewLine Nächste %> </TABLE> </BODY> </HTML> |