배열 을 통 해 파일 정렬

FILESYSTEMOBJECT 대상 을 사용 하여 디 렉 터 리 에 있 는 파일 목록 을 얻 었 을 때,이름 에 따라 정렬 하고,확장자 에 따라 정렬 하고,파일 크기 에 따라 정렬 하 는 등 정렬 방식 을 제어 할 수 없 는 것 을 발 견 했 습 니까?배열 로 정렬 해 보 겠 습 니 다.    이름 으로 정렬 하려 면 매우 간단 할 것 입 니 다.그러나 파일 크기 나 파일 생 성 시간 등 을 통 해 정렬 하려 면 좀 번 거 로 울 것 입 니 다.우 리 는 2 차원 배열 을 통 해 이 점 을 해 낼 것 이다.    다음 코드 는 정렬 방식 을 선택 하여 우리 의 목적 을 달성 하 는 방법 을 보 여 줍 니 다.정렬 을 누 르 면 두 번 누 르 면 거꾸로 배열 합 니 다.
파일 정렬 프레젠테이션</ITLE></HEAD><BODY><%'프레젠테이션 디 렉 터 리 설정,:)CONST DIRECTORY="/"상수 정의 정렬 방식 CONST FILENAME=0'이름 순 으로 정렬...차례로 유추 CONST FILEEXT = 1CONST FILE_TYPE = 2CONST FILE_SIZE = 3CONST FILE_CREATED = 4CONST FILE_MODIFIED = 5CONST FILE_ACCESSED=6'정렬 명령 획득,기본 값 은 이름 순 으로 req=Request("sortBy")If Len(req)<1 Then sortBy=0 Else sortBy=CInt(req)req=Request("priorSort")If Len(req)<1 Then priorSort=-1 Else priorSort=CInt(req)'설정 역순 If sortBy=priorSort Thenreverse=truepriorSort=-1Elsereverse=falsepriorSort=sortByEnd If'입 니 다.。。path=Server.MapPath(DIRECTORY)Set fso=CreateObject("Scripting.FileSystem Object")Set the CurrentFolder=fso.GetFolder(path)Set curFiles=the CurrentFolder.Files'이 파일 들 에 순환 을 만들어 줍 니 다.Dim the Files()ReDim the Files(500)'내 가 마음대로 정 한 크기 currentSlot=-1'start before first slot'파일 의 모든 정 보 를 숫자 에 넣 습 니 다.그룹 내 For Each fileItem in curFilesfname=fileItem.Namefext=InStrRev(fname,".")If fext<1 Then fext=""Else fext=Mid(fname,fext+1)ftype=fileItem.Typefsize=fileItem.Sizefcreate=fileItem.DateCreatedfmod=fileItem.DateLastModified access=fileItem.DateAccessed currentSlot=currentSlot+1If currentSlot>UBound(theFiles)ThenReDim Preserve theFiles(currentSlot+99)End If'를 배열 에 넣 습 니 다 theFiles(currentSlot)=Array(fname,fext,ftype,fsize,fcreate,fmod,fmod,faccess)next'는 현재 배열 에 있 습 니 다.다음 fileCount=currentSlot'파일 수 ReDim Preserve the Files(currentSlot)'정렬'(8 은 string 을 표시 합 니 다)If VarType(the Files(0)(sortBy)=8 ThenIf reverse Then kind=1 Else kind=2'문자 정렬 ElseIf reverse Then kind=3 Else kind=4'숫자,시간.End IfFor i = fileCount TO 0 Step -1minmax = theFiles(0)(sortBy)minmaxSlot = 0For j = 1 To iSelect Case kindCase 1mark = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) < 0)Case 2mark = (strComp(theFiles(j)(sortBy), minmax,(theFiles(j)(sortBy)<minmax)Cas4mark=(theFiles(j)(sortBy)>minmax)End SelectIfmark Thenminmax=theFiles(j)(sortBy)<minmax)Cas4mark=(theFiles(j)(sortBy)<minmax)>minmaxSlo<>i Thentemp=theFile(minmax Slo) theFile(minmaxSlo) theFiles(minmaxSlo)=theFiles(i)theFiles(i)theFiles(i)theFiles(i)=temEndIfNext'종료%><FORM 이름="do정렬"방법="Get">"Get"><INPUT Type=<INPUT Type=<INPUT Type=<<<INPUT Type=<안녕.dden Name=priorSort Value="<% = priorSort %>"><INPUT Type=Hidden Name=sortBy Value="-1"></FORM><SCRIPT Language="JavaScript">function reSort(which){document.doSort.sortBy.value = which;document.doSort.submit();}</SCRIPT><CENTER><FONT Size="+2">디 스 플레이<%=(fileCount+1)%>이 디 렉 터 리 에 있 는 파일<%=path%></FONT><P>정렬 을 클릭 하고 역방향 정렬<P><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><%For i=0 To fileCountResponse.Write"<TR>"&vbNewLineFor j=0 To Ubound(theFiles(i)Response.Write"<TD>"&theFiles(i)(j)&"</TD>"&vbNewLineNextResponse.Write"</TR>&vbNewLineNext%></TABLE></BODY></HTML>

좋은 웹페이지 즐겨찾기