عند استخدام كائن FILESYSTEMOBJECT للحصول على قائمة الملفات في الدليل، هل وجدت أنه لا يمكنك التحكم في طريقة فرزها، مثل الفرز حسب الاسم، والفرز حسب الامتداد، والفرز حسب حجم الملف، وما إلى ذلك. دعونا نحاول استخدم مصفوفة لترتيبها بالترتيب.
إذا كنت تريد الفرز حسب الاسم، فسيكون الأمر بسيطًا جدًا، ولكن إذا كنت تريد الفرز حسب حجم الملف أو وقت إنشاء الملف، وما إلى ذلك، فسيكون الأمر مزعجًا بعض الشيء. سنفعل ذلك عبر مصفوفة ثنائية الأبعاد.
يوضح الكود التالي كيفية تحقيق هدفنا عن طريق التحديد والفرز، ثم انقر مرتين للفرز العكسي.
<أتش تي أم أل> <الرأس> <TITLE>عرض توضيحي لفرز الملفات</TITLE> </الرأس> <الجسم> <% 'قم بتعيين دليل تجريبي، :) دليل CONST = / 'استخدم الثوابت لتحديد طريقة الفرز CONST FILE_NAME = 0 'الفرز حسب الاسم...وهكذا ملف CONST_EXT = 1 نوع الملف CONST = 2 CONST FILE_SIZE = 3 ملف CONST_CREATED = 4 ملف CONST_MODIFIED = 5 CONST FILE_ACCESSED = 6 "احصل على أمر الفرز، الإعداد الافتراضي هو الفرز حسب الاسم." ريك = طلب (فرز حسب) إذا كان Len(req) < 1، فإن SortBy = 0 وإلا SortBy = CInt(req) req = طلب (الفرز المسبق) إذا كان Len(req) < 1، فإن الفرز المسبق = -1 وإلا فإن الترتيب المسبق = CInt(req) "ضبط الترتيب العكسي." إذا كان فرز حسب = فرز مسبق ثم عكس = صحيح الفرز المسبق = -1 آخر عكس = خطأ preSort = SortBy نهاية إذا ' بعد ذلك نبدأ الكود الحقيقي الخاص بنا. . . المسار = Server.MapPath (الدليل) تعيين fso = CreateObject(Scripting.FileSystemObject) قم بتعيين المجلد الحالي = fso.GetFolder(path) تعيين curFiles = theCurrentFolder.Files "قم بعمل حلقة حول هذه الملفات." تعتيم الملفات () ReDim theFiles(500) 'لقد قمت بتعيين حجم عشوائي currentSlot = -1 ' ابدأ قبل الفتحة الأولى 'لقد وضعنا جميع المعلومات ذات الصلة بالملف في المصفوفة لكل ملف عنصر في curFiles fname = fileItem.Name fext = InStrRev(fname, .) إذا fext < 1 ثم fext = آخر fext = Mid(fname,fext+1) ftype = fileItem.Type fsize = fileItem.Size fcreate = fileItem.DateCreated fmod = fileItem.DateLastModified faccess = fileItem.DateLastAccessed الفتحة الحالية = الفتحة الحالية + 1 إذا كانت الفتحة الحالية > UBound(theFiles) إذن ReDim الحفاظ على الملفات (الفتحة الحالية + 99) نهاية إذا "ضعها في المصفوفة." theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess) التالي "الآن بعد أن أصبح كل شيء في المصفوفة، ابدأ الخطوة التالية." fileCount = currentSlot 'عدد الملفات ReDim الحفاظ على الملفات (الفتحة الحالية) ' نوع '(8 تعني السلسلة) إذا كان VarType(theFiles(0)(sortBy)) = 8 إذن إذا كان العكس فاكتب = 1 النوع الآخر = 2 'فرز الأحرف آخر إذا كان العكس ثم اكتب = 3 نوع آخر = 4 'الرقم، الوقت. . . نهاية إذا لأني = fileCount TO 0 الخطوة -1 الحد الأدنى = الملفات (0) (فرز حسب) الحد الأدنى للفتحة = 0 ل ي = 1 إلى ط حدد نوع الحالة الحالة 1 علامة = (strComp(theFiles(j)(sortBy)، minmax، vbTextCompare) < 0) الحالة 2 علامة = (strComp(theFiles(j)(sortBy)، minmax، vbTextCompare) > 0) الحالة 3 علامة = (theFiles(j)(sortBy) <minmax) الحالة 4 علامة = (theFiles(j)(sortBy)> الحد الأدنى) إنهاء التحديد إذا علامة ثم الحد الأدنى = الملفات (ي) (فرز حسب) minmaxSlot = j نهاية إذا التالي إذا minmaxSlot <> i ثم درجة الحرارة = الملفات (minmaxSlot) theFiles(minmaxSlot) = theFiles(i) theFiles(i) = temp نهاية إذا التالي ' ينهي %> <اسم النموذج=طريقة الفرز=الحصول على> <نوع الإدخال=الاسم المخفي=قيمة الترتيب المسبق=<% = الفرز المسبق %>> <نوع الإدخال=الاسم المخفي=قيمة الفرز حسب=-1> </فورم> <لغة البرنامج النصي=جافا سكريبت> إعادة فرز الدالة (التي) { document.doSort.sortBy.value = الذي؛ document.doSort.submit(); } </النص> <المركز> <حجم الخط=+2> عرض <% = (fileCount+1) %> الملفات في هذا الدليل <% = path %> </الخط> <ف> انقر فوق فرز ثم انقر فوق الفرز العكسي مرة أخرى <ف> <TABLE Border=1 CellPadding=3> <TR> <TH><A HREF=javascript:reSort(0);>اسم الملف</A></TH> <TH><A HREF=javascript:reSort(1);>الامتداد</A></TH> <TH><A HREF=javascript:reSort(2);>النوع</A></TH> <TH><A HREF=javascript:reSort(3);>الحجم</A></TH> <TH><A HREF=javascript:reSort(4);>وقت الإنشاء</A></TH> <TH><A HREF=javascript:reSort(5);>وقت آخر تعديل</A></TH> <TH><A HREF=javascript:reSort(6);>آخر وقت للوصول</A></TH> </TR> <% لأني = 0 إلى fileCount الاستجابة.اكتب <TR> وvbNewLine من أجل j = 0 إلى UBound(theFiles(i)) Response.Write <TD> & theFiles(i)(j) & </TD> & vbNewLine التالي Response.Write </TR> & vbNewLine التالي %> </الجدول> </الجسم> </HTML> |