文章·资料 电脑软件 手机软件 网站源码




    本 站 搜 索
   推 荐 文 章        More...
华硕易电脑(ASUS Eee PC 10..
先来段开场白:为了外出携带方便..
Acronis True Image 使用..
  一款可以在Windows下使用..
Norton Ghost 使用详解
一、分区备份   使用Ghost..
    文 章 阅 读 排 行
“啊估文章软件站”网站系..
一、调试测试网站系统时,如何..
关于 Firefox 在中国持续..
亲爱的 Firefox 用户及 Firefox..
向日葵远程控制软件,设置..
向日葵远程控制软件有个人版和..
夸克网盘新用户注册如何获..
夸克网盘,新用户注册如何获得1..
FileZilla Server 设置参考
FileZilla Server 启动界面 ..
PakePlus 构建 APP 需要 Gi..
PakePlus 是一个基于 Rust Taur..
电脑显示器使用 HDMI 数据..
如果电脑显示器使用 HDMI 数据..
ASP/JavaScript:不刷新页..
function GuReturnElement(..
分享几个免费申请 SSL 证..
DigiCert 原 Symantec(赛门铁..
关闭微信的个性化推荐广告
有网友说到,微信的初衷是拉近..
 文 章 信 息
ASP(FSO)通过数组给文件列表排序
评论()〗〖留言〗〖收藏
〖文章分类:电脑·手机·网络 / 网站设计·开发·优化〗〖阅读选项
  当您使用FILESYSTEMOBJECT(fso)对象获得某个目录下的文件列表的时候,你有没有发现无法控制它们的排序方式,比如按照名字排序,按照扩展名排序,按照文件大小排序等等,让我们试着用数组给它们排排序儿。

  如果您想通过名字排序,那将是非常简单的,但是假如你想通过文件大小或者文件创立时间等等来排序的时候,那么将有点麻烦。我们将通过二维数组做到这一点。

  下面的代码演示了如何通过选择排序方式达到的我们目的,单击排序,点两次就反着排了。

<HTML> 
<HEAD> 
<TITLE>文件排序演示</TITLE> 
</HEAD> 
<BODY> 
<% 
' 设定一个演示目录,:) 
CONST DIRECTORY = "/" 
' 用常数定义排序方式 
CONST FILE_NAME = 0 '按照名字排序……依次类推 
CONST FILE_EXT = 1 
CONST FILE_TYPE = 2 
CONST FILE_SIZE = 3 
CONST FILE_CREATED = 4 
CONST FILE_MODIFIED = 5 
CONST 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 Then 
reverse = true 
priorSort = -1 
Else 
reverse = false 
priorSort = sortBy 
End If 
' 接下来开始我们真正的代码了。。。 
path = Server.MapPath( DIRECTORY ) 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set theCurrentFolder = fso.GetFolder( path ) 
Set curFiles = theCurrentFolder.Files 
' 给这些文件做一个循环 
Dim theFiles( ) 
ReDim theFiles( 500 ) ' 我随便定的一个大小 
currentSlot = -1 ' start before first slot 
' 我们将文件的所有相关信息放到数组里面 
For Each fileItem in curFiles 
fname = fileItem.Name 
fext = InStrRev( fname, "." ) 
If fext < 1 Then 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 
If currentSlot > UBound( theFiles ) Then 
ReDim Preserve theFiles( currentSlot + 99 ) 
End If 
' 放到数组里 
theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess) 
Next 
' 现在都在数组里了,开始下一步 

fileCount = currentSlot ' 文件数量 
ReDim Preserve theFiles( currentSlot ) 
' 排序 
' (8 表示 string) 
If VarType( theFiles( 0 )( sortBy ) ) = 8 Then 
If reverse Then kind = 1 Else kind = 2 ' 给字符排序 
Else 
If reverse Then kind = 3 Else kind = 4 '数字、时间。。。 
End If 
For i = fileCount TO 0 Step -1 
minmax = theFiles( 0 )( sortBy ) 
minmaxSlot = 0 
For j = 1 To i 
Select Case kind 
Case 1 
mark = (strComp( theFiles(j)(sortBy), minmax, vbTextCompare ) < 0) 
Case 2 
mark = (strComp( theFiles(j)(sortBy), minmax, vbTextCompare ) > 0) 
Case 3 
mark = (theFiles( j )( sortBy ) < minmax) 
Case 4 
mark = (theFiles( j )( sortBy ) > minmax) 
End Select 
If mark Then 
minmax = theFiles( j )( sortBy ) 
minmaxSlot = j 
End If 
Next 
If minmaxSlot <> i Then 
temp = theFiles( minmaxSlot ) 
theFiles( minmaxSlot ) = theFiles( i ) 
theFiles( i ) = temp 
End If 
Next 
' 结束 
%> 
<FORM Name="doSort" Method="Get"> 
<INPUT Type=Hidden 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 fileCount 
Response.Write "<TR>" & vbNewLine 
For j = 0 To UBound( theFiles(i) ) 
Response.Write " <TD>" & theFiles(i)(j) & "</TD>" & vbNewLine 
Next 
Response.Write "</TR>" & vbNewLine 
Next 
%> 
</TABLE> 
</BODY> 
</HTML>

文章作者:未知  更新日期:2008-03-07
〖文章浏览:〗〖发送文章〗〖打印文章
相关文章 ·ASP(FSO)文件列表排序2008-03-07
〖文章阅读说明〗
·本站大部分文章转载于网络,如有侵权请留言告知,本站即做删除处理。
·本站法律法规类文章转载自[中国政府网(www.org.cn)],相关法律法规如有修订,请浏览[中国政府网]网站。
·本站转载的文章,不为其有效性,实效性,安全性,可用性等做保证。
·如果有什么问题,或者意见建议,请联系[网站管理员]。