Saat Anda menggunakan objek FILESYSTEMOBJECT untuk mendapatkan daftar file dalam direktori, pernahkah Anda menemukan bahwa Anda tidak dapat mengontrol cara pengurutannya, seperti mengurutkan berdasarkan nama, mengurutkan berdasarkan ekstensi, mengurutkan berdasarkan ukuran file, dll. Mari kita coba gunakan array untuk Mereka disusun secara berurutan.
Jika ingin mengurutkan berdasarkan nama akan sangat mudah, namun jika ingin mengurutkan berdasarkan ukuran file, waktu pembuatan file, dll, maka akan sedikit merepotkan. Kami akan melakukan ini melalui array 2D.
Kode berikut menunjukkan cara mencapai tujuan kita dengan memilih dan mengurutkan. Klik untuk mengurutkan, dan klik dua kali untuk mengurutkan secara terbalik.
<HTML> <KEPALA> <TITLE>Demonstrasi penyortiran file</TITLE> </KEPALA> <TUBUH> <% 'Tetapkan direktori demo, :) DIREKTORI CONST = / ' Gunakan konstanta untuk menentukan metode pengurutan CONST FILE_NAME = 0 'Urutkan berdasarkan nama...dan seterusnya KONST FILE_EXT = 1 KONST FILE_TYPE = 2 KONST FILE_SIZE = 3 KONST FILE_CREATED = 4 KONST FILE_MODIFIED = 5 KONST FILE_ACCESSED = 6 'Dapatkan perintah pengurutan, defaultnya adalah mengurutkan berdasarkan nama req = Permintaan(sortirBerdasarkan) Jika Len(req) < 1 Maka sortBy = 0 Else sortBy = CInt(req) req = Permintaan(priorSort) Jika Len(req) < 1 Maka priorSort = -1 Else priorSort = CInt(req) 'Atur urutan terbalik Jika sortBy = priorSort Kemudian terbalik = benar pengurutan sebelumnya = -1 Kalau tidak terbalik = salah priorSort = sortirBerdasarkan Akhiri Jika ' Selanjutnya kita memulai kode asli kita. . . jalur = Server.MapPath(DIREKTORI) Setel fso = CreateObject(Scripting.FileSystemObject) SetelCurrentFolder = fso.GetFolder(path) Setel curFiles = theCurrentFolder.Files 'Buat lingkaran pada file-file ini Redupkan File() ReDim theFiles(500) ' Saya menetapkan ukuran acak currentSlot = -1 ' dimulai sebelum slot pertama 'Kami memasukkan semua informasi yang relevan dari file tersebut ke dalam array Untuk Setiap fileItem di curFiles fname = fileItem.Nama fext = InStrRev(fnama, .) Jika fext < 1 Maka fext = Else fext = Mid(fname,fext+1) ftype = fileItem.Jenis fsize = fileItem.Ukuran fcreate = fileItem.DateCreated fmod = fileItem.DateLastModified faccess = fileItem.DateLastAccessed Slot saat ini = Slot saat ini + 1 Jika CurrentSlot > UBound(theFiles) Lalu ReDim Pertahankan File (Slot saat ini + 99) Akhiri Jika ‘Masukkan ke dalam array theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess) Berikutnya 'Sekarang semuanya sudah ada dalam array, mulailah langkah berikutnya fileCount = currentSlot 'Jumlah file ReDim Pertahankan File (Slot saat ini) ' Sortir ' (8 berarti string) Jika VarType(theFiles(0)(sortBy)) = 8 Maka Jika terbalik Maka jenis = 1 Jenis lain = 2 ' Urutkan karakter Kalau tidak Jika terbalik Maka jenis = 3 Jenis lain = 4 'Nomor, waktu. . . Akhiri Jika Untuk i = fileCount TO 0 Langkah -1 minmax = File(0)(urutkanBerdasarkan) minmaxSlot = 0 Untuk j = 1 Ke i Pilih Jenis kasus Kasus 1 tandai = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) < 0) Kasus 2 tandai = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) > 0) Kasus 3 tandai = (theFiles(j)(sortBy) < minmax) Kasus 4 tandai = (theFiles(j)(sortBy) > minmax) Pilihan Akhir Jika tandai Lalu minmax = File(j)(urutkanBerdasarkan) minmaxSlot = j Akhiri Jika Berikutnya Jika minmaxSlot <> i Lalu temp = File(minmaxSlot) file(minmaxSlot) = File(i) file(i) = suhu Akhiri Jika Berikutnya ' Menyelesaikan %> <Nama FORMULIR=Metode doSort=Dapatkan> <Jenis INPUT=Nama Tersembunyi=Nilai PriorSort=<% = PriorSort %>> <Jenis INPUT=Nama Tersembunyi=nilai urutkan=-1> </BENTUK> <Bahasa SKRIP=JavaScript> fungsi reSort (yang mana) { document.doSort.sortBy.value = yang mana; dokumen.doSort.submit(); } </SKRIP> <PUSAT> <Ukuran FONT=+2> Tampilkan <% = (fileCount+1) %> file di direktori ini <% = jalur %> </FONT> <P> Klik Sortir dan klik Sortir Terbalik lagi <P> <TABLE Border=1 CellPadding=3> <TR> <TH><A HREF=javascript:reSort(0);>Nama file</A></TH> <TH><A HREF=javascript:reSort(1);>Ekstensi</A></TH> <TH><A HREF=javascript:reSort(2);>Ketik</A></TH> <TH><A HREF=javascript:reSort(3);>Ukuran</A></TH> <TH><A HREF=javascript:reSort(4);>Waktu pembuatan</A></TH> <TH><A HREF=javascript:reSort(5);>Waktu terakhir diubah</A></TH> <TH><A HREF=javascript:reSort(6);>Waktu akses terakhir</A></TH> </TR> <% Untuk i = 0 Ke fileCount Respon.Tulis <TR> & vbNewLine Untuk j = 0 Ke UBound(theFiles(i)) Respon.Tulis <TD> & theFiles(i)(j) & </TD> & vbNewLine Berikutnya Respon.Tulis </TR> & vbNewLine Berikutnya %> </TABEL> </BODI> </HTML> |